「BigDecimal」を含む日記 RSS

はてなキーワード: BigDecimalとは

2023-12-14

架空言語、という事にしておいてほしいんだが

    List<Record> rows = DBから持ってくる();

    // 合計金額を求める
    String total = "0";
    for (Record r : rows) {
        BigDecimal temp = BigDecimal.parse( カンマを削除する関数(total) ); 
        BigDecimal temp2 = temp + r.金額;
        total = カン区切り文字列にする関数(temp2); 
    }

    // やったー合計金額計算してカン区切り文字列にできたよー
    return total;

とか

    // async await は非同期処理を同期してくれる魔法言葉だって!よく知らんけど
    await axios.get('/foo')
        .then(function(result) {
             // やったー結果が得られたよー
        });

とか

正直なところ、こういうコードのお守りするの、そろそろキツい。。。

2018-02-27

anond:20180227140857

演算子の多重定義のないJava

BigDecimal result = new BigDecimal("100000").multiply(new BigDecimal("99999.55")).add(new BigDecimal("3333333333"));

多重定義のあるC++

BigDecimal result = BigDecimal("100000") * "99999.55" / "3333333333";

2009-10-28

固定少数点演算

http://d.hatena.ne.jp/shin/20091027/p1

ネットコンピュータ実数演算の誤差の話になると「固定少数なら誤差がでない」みたいなことを言う人を見かけるけど、COBOLのやつとかJavaBigDecimalは固定少数じゃないし、本当の固定少数は浮動少数と同じくやっぱり誤差が出る。

なんでこういう誤用が広まるんだろう。

大昔は、BCD多倍長整数やら、固定少数のクラスやら自分で実装したりする人も多かっただろうけど、最近言語は最初からライブラリについてるから、そのせいかなぁ。

2009-10-25

Javaってかわいそう

http://d.hatena.ne.jp/j5ik2o/20091024/1256369305

    // 1.0 - 9 * 0.1
    BigDecimal b1 = new BigDecimal(1.0);
    BigDecimal b2 = new BigDecimal(-9);
    BigDecimal b3 = new BigDecimal("0.1");
    BigDecimal result = b1.add(b2.multiply(b3));	
    System.out.println(result.toString());

を見て悲しくなった。Javaってひどい。0.1は文字列で渡さないと誤差が出るってさ。泣ける。

C#なら

    Console.WriteLine( 1.00M - 9M * .10M );

でOK

 
ログイン ユーザー登録
ようこそ ゲスト さん