Curl Global Community
BigDecimal.to-String で、小数点桁に0が増えてしまう - Printable Version

+- Curl Global Community (https://communities.curl.com)
+-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1)
+--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2)
+--- Thread: BigDecimal.to-String で、小数点桁に0が増えてしまう (/showthread.php?tid=1020)



BigDecimal.to-String で、小数点桁に0が増えてしまう - umemura - 12-19-2013

業務画面内で、BigDecimal を利用しており、
画面に表示する際には、BigDecimal.toStringメソッドで文字列に変換していますが、
サーバから取得した時点では123.12 という値なのですが、
123.12000000000000 と小数点以下の0が増えた状態で表示されてしまいます。

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

なぜなのでしょうか。



RE: BigDecimal.to-String で、小数点桁に0が増えてしまう - umemura - 12-19-2013

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}}