減算を別関数に分けたら無事?falseになったのでD言語のcompile time foldingが超強力っぽい pic.twitter.com/5YpkDXverg
2017-10-27 14:36:35これによるとD言語の浮動小数点数の定数畳み込みはreal型で行われるとあるので、x86の80ビット浮動小数点数が使える環境なら通常の倍精度と結果が変わっても不思議ではない dlang.org/spec/float.htm…
2017-10-27 15:02:11@mutaguchi D言語に関して言うと,浮動小数点数の定数畳み込みは最低でもreal型の精度(amd64だと80bit)で計算することになっていて,そのあとリテラルのdouble精度(同64bit)まで落とすので,0.3-0.2と0.2-0.1は同じ値になってしまいます.
2017-10-28 16:20:31D言語で0.3-0.2と0.2-0.1が等しくなるやつ、浮動小数点数の定数畳み込みはreal型(amd64だと80bit)で計算されることになっていて、その結果をdouble(64bit)の変数に代入しているから。
2017-10-28 19:14:49NowBrowsing: マシンの中のリアル : Dの浮動小数点数 - プログラミング言語 D (日本語訳): kmonos.net/alang/d/d-floa… 面白いなあ
2017-10-28 21:48:10その他の反応
@RIORAO あれ……? JS君ってこんなに可愛かったっけ……。 そうだったわ、機械は二進数しか理解できないんだった。 循環小数の恐怖ですね。僕もDouble型使うときは気を付けよっと。 JS「え?僕の事じゃないの?」 僕「黒魔術用の言語(C++)使ってるから……」
2017-10-27 02:23:21@RIORAO pythonのインタラクティブシェルでもFalseになったから同じ計算方式なのかな・・ pic.twitter.com/PkW21m5oG5
2017-10-27 02:25:01@RIORAO decimalの使いどころが分かった気がしました。ありがとうございました。 pic.twitter.com/DAwzlPsRYT
2017-10-27 07:05:36@RIORAO for(var i =0;i < 10;i += 0.1) とやるとiがどんどんおかしな数字になるのと同じかな? if (i==0.9)に当たらなくて帰れなかった記憶が…
2017-10-27 07:44:24@RIORAO MDNにもしっかり明記される程度には一般的な仕様なんですよね developer.mozilla.org/ja/docs/Web/Ja…
2017-10-27 09:09:55@RIORAO and I just Test another thing var a=0.30000000000000000000000045454454 var b=0.29999999999999999999999999999999 var c=a==b c is true
2017-10-27 11:28:25これって結局 基本的に浮動小数で0.1とか0.2をきれいに表示できないからだと思う twitter.com/KASServerTF2/s…
2017-10-27 12:02:40@RIORAO 16言語で確認しましたが、trueを返すのはGo言語とD言語だけでした。 #Golang #Dlang #CPP #CSharp #javascript #Ruby #PHP #swift #java #python #rust #kuin #なでしこ #haskell pic.twitter.com/QPrl8unl0E
2017-10-27 03:52:42Perl6 も True を返しますね(有理数として扱われるので誤差が出ない) twitter.com/KASServerTF2/s…
2017-10-27 22:09:12Racketだと (= (- #e0.3 #e0.2) (- #e0.2 #e0.1)) なら #t になる(exact な 0.3 であるところの #e0.3 が rational の 3/10 になったりする
2017-10-27 23:38:03ぶっちゃけこれJavaScriptに限った問題じゃないっていうか、精度保証つき数値計算ライブラリをJavaScriptに移植すればいいのでは twitter.com/RIORAO/status/…
2017-10-27 11:26:10やはり精度保証つき数値計算ライブラリをJavaScriptで実装するしかないのでは(誰がやるんだ) (1/10+1/10+1/10 == 3/10 がtrueになって欲しい、くらいなら有理数型があればいいような気もするけど)
2017-10-27 15:07:40