あなたはmath:
機能へのアクセスを持っている場合は分割すると10の適切なパワーを乗じて数字の対数とシフトを使用して、関連する桁数を計算し、XQueryの3.0ために提案:
for $number in (527000.0, 11920.0, 131900.0, 5960.0, 14400.0, 7200.0, 17130.0, 8565.0, 42.0, 0)
let $log := if ($number > 0) then floor(math:log10($number)) else 1
let $pow := math:pow(10, $log - 3)
return concat($number, ': ', floor($number div $pow) * $pow)
これが返されます予想数字:
527000: 527000
11920: 11920
131900: 131900
5960: 5960
14400: 14400
7200: 7200
17130: 17130
8565: 8565
42: 42
0: 0
あなたは、XQuery 1.0で立ち往生しているか、それがもっと面白い(そして醜い)を取得し、高度な数学関数へのアクセスを持っていない場合。いくつかの文字列操作はどうですか?
for $number in (527000.0, 11920.0, 131900.0, 5960.0, 14400.0, 7200.0, 17130.0, 8565.0, 42.0, 0)
let $string := xs:string($number)
let $length := string-length($string)
return concat($number, ': ', substring($string, 1, 3), string-join(for $i in 4 to $length return '0'))
もちろん、数値に再度変換することはできます。よりエレガントな方法があるかどうかはわかりません。非自然または非正の数をサポートする必要がある場合は、このコードを拡張する必要があります。
は、残念ながら私は、XQueryの1.0で立ち往生しています解決だと思います。あなたの返信をありがとう、私はこれを見てみましょう。 – user1905307