Curl Global Community

Full Version: BigDecimal.to-String で、小数点桁に0が増えてしまう
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
業務画面内で、BigDecimal を利用しており、
画面に表示する際には、BigDecimal.toStringメソッドで文字列に変換していますが、
サーバから取得した時点では123.12 という値なのですが、
123.12000000000000 と小数点以下の0が増えた状態で表示されてしまいます。

別の画面では、正常に 123.12 と表示されており、
どちらも BigDecimal.toString を利用しています。

なぜなのでしょうか。
BigDecimal の元の値の型が、double なのか、String なのかで、
振舞いが変わるようでした。
asa でキャストしていたので、元の値の型までは意識できていませんでした。

開発時には、元の型をStringに統一するか、
BigDecimal.to-String の前に必ずスケールを設定するか、
どちらかをルールとして徹底する必要がありそうですね。

Code:
|| String型から作成したBigdecimal は
|| to-String で元にもどされて、123.12 と表示される  
def bd = "123.12" asa BigDecimal
||def bd = {BigDecimal.from-String "123.12"}
{popup-message {bd.to-String}}

let bd-d:BigDecimal = 123.12 asa BigDecimal
||let bd-d:BigDecimal = {BigDecimal.from-double 123.12}

|| double型から作成したBigdecimal は
||to-String すると、123.12000000000000 と表示される       
{popup-message {bd-d.to-String}}

||set-scale でスケールを指定することが出来るので
||この指定をして始めて 123.12 と表示することができる
set bd-d = {bd-d.set-scale 2}
{popup-message {bd-d.to-String}}