- PR -

double型について

1
投稿者投稿内容
geekfreed
会議室デビュー日: 2003/11/17
投稿数: 17
投稿日時: 2004-04-30 13:24
いつもお世話になっております。

実は、double型で悩んでおります。
下記のようなクラスを作成したのですが、
prodCenterYの値が「19519.989999999998」となります。
期待した値は、「19519.99」なのですが。。。
どうすればきたい通りの値になるでしょうか?
宜しく御願いします。

public class A
{
public static void main(String[] args)
{
double prodLLy = 10495.24;
double prodURy = 28544.74;
double prodCenterY = prodLLy + (prodURy - prodLLy)/2;
}
}
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-04-30 14:03
Javaは良く分からないのですが、
(prodURy + prodLLy)/2
にしてみてはどうでしょうか。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-04-30 14:19
引用:

geekfreedさんの書き込み (2004-04-30 13:24) より:
実は、double型で悩んでおります。
下記のようなクラスを作成したのですが、
prodCenterYの値が「19519.989999999998」となります。
期待した値は、「19519.99」なのですが。。。
どうすればきたい通りの値になるでしょうか?
宜しく御願いします。


浮動小数点データを使って演算を行う場合、このような誤差が発生するのは避けられません。
このような誤差が許容できないのであれば、浮動小数点型(double、float)はではなく
BigDecimalを使うべきです。
yohey
会議室デビュー日: 2003/09/16
投稿数: 2
投稿日時: 2004-04-30 14:31
ここによい説明がされていますよ.
参考にしてくださいな.

http://msugai.fc2web.com/java/class/BigDecimal.html
yohey
会議室デビュー日: 2003/09/16
投稿数: 2
投稿日時: 2004-04-30 14:33
ここによい説明がされていますよ。
参考にしてくださいな。

http://msugai.fc2web.com/java/class/BigDecimal.html
geekfreed
会議室デビュー日: 2003/11/17
投稿数: 17
投稿日時: 2004-04-30 16:28
書込みしてくださった皆さん有難う御座います。
早速、やらせて頂きます。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-04-30 22:08
参考
Excelの演算誤差
http://oku.edu.mie-u.ac.jp/~okumura/software/excel/roundoff.html

StarSuite 7 の表計算でも 19519.99 になりました。

1

スキルアップ/キャリアアップ(JOB@IT)