- - PR -
POIについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-05-12 13:25
ここまでお分かりなのであれば、ご自分でgoogle等で検索されては如何でしょう? それすら面倒であれば、java.math.BigDecimalを使ってください。 解決しますから。 | ||||
|
投稿日時: 2006-05-12 16:37
_ asano (2006-05-05 05:53)
サンのサイトで原文と日本語訳を見つけました。再編集したとの注があるので、お手元のものとは内容が異なるかもしれません。 What Every Computer Scientist Should Know About Floating-Point Arithmetic http://docs.sun.com/source/806-3568/ncg_goldberg.html 浮動小数点演算について http://docs.sun.com/source/806-4847/ncg_goldberg.html 「以前は公開されてた」日本語訳というのは、こちらの TEX ファイルかも。 http://web.archive.org/web/20031225015958/http://urr3.cs.uec.ac.jp/ohkubo-k/papers/goldberg.tex _ すずきひろのぶ (2006-05-05 11:14) 「計算では1.1 - 0.1 = 1.0が常に成り立つとは限らない」とか急に言われても何それ?だよね。 浮動小数点演算の解説は、ある意味、コンピュータの説明の中でも一番難しいものの1つだと思う。 暗黙のうちに「計算・実数・連続性」とずっと理解してきたところに、急にコンピュータで計算するときは「計算・算術的近似・非連続性」という理解に置き換えろといわれたら慌てるよ、やっぱり。言われないとわからないし、言われたところで急に変えろといわれても難しいよね。 ---------- 有限桁で計算すると、こうなります。 ハードの実装にもよりますし、 仮数の最下位桁の1ビットは交互に違うとか(Crayのベクトル計算機)の話や 最下位の厳密さはいろいろ ========= I/Oでソフトの実装の精度も要確認とか、 strtod、strtol、strtoul 系関数 wcstod http://www.rubyist.net/~matz/20060511.html#p02 [ メッセージ編集済み 編集者: MMX 編集日時 2006-05-16 10:53 ] | ||||
|
投稿日時: 2006-05-12 18:21
double の演算方法については何十年も前からある IEEE754 で決まっているとおりのことをやっているだけでしょう。だから、問題は、Java の中で、どう2進数→10進数変換をしているか(打ち切りの仕方をどう決めているか)ということだけだと思います。 だから、4.1 等の2進数表記ではなく、4.1d * 100d 等の2進数表記がどうなっているかを気にされたほうが良いと思います。 この変換は、たしか java.lang.FloatingDecimal でやってたと思います。JDK にはソースコードも src.zip の中に標準で付属していますが、見る気もしません。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||
|
投稿日時: 2006-05-15 09:57
返事が遅くなってすみません。
しのさん、MMXさん、unibonさんありがとうございます。 >しのさん double型をBigDecimalでコンストラクタすると 無限小数のまま表示されませんでしたっけ? これから調べてみます。 >MMXさん 貴重な情報を親切に教えていただきありがとうございます。 参考にさせていただきます。 >unibonさん IEEE754の記事はいくつか読んだのですがあまり・・・。 もう少し調査してみます。 |