Thread Rating:
  • 389 Vote(s) - 2.87 Average
  • 1
  • 2
  • 3
  • 4
  • 5
BigDecimal.to-String で、小数点桁に0が増えてしまう
12-19-2013, 01:58 PM,
#1
BigDecimal.to-String で、小数点桁に0が増えてしまう
業務画面内で、BigDecimal を利用しており、
画面に表示する際には、BigDecimal.toStringメソッドで文字列に変換していますが、
サーバから取得した時点では123.12 という値なのですが、
123.12000000000000 と小数点以下の0が増えた状態で表示されてしまいます。

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

なぜなのでしょうか。
12-19-2013, 02:03 PM,
#2
RE: BigDecimal.to-String で、小数点桁に0が増えてしまう
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}}


Possibly Related Threads...
Thread Author Replies Views Last Post
  BigDecimal -> int kay 1 4,309 03-09-2015, 11:35 AM
Last Post: umemura
  BigDecimal の丸め umemura 0 3,113 11-20-2014, 11:19 AM
Last Post: umemura
  なぜ String から BigDecimal にキャスト可能なのか umemura 2 4,475 12-12-2013, 01:24 PM
Last Post: crispincross
  Clipboard.get-string のバグ? umemura 2 3,830 06-28-2013, 01:34 PM
Last Post: umemura
  RecordSort として String をパースすることはできませんでした umemura 2 3,700 11-01-2011, 04:09 PM
Last Post: c-s
Forum Jump:


Users browsing this thread:
1 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('1020')