新しいものを表示

同じ事をC#のdecimalでやるならば、
decimal justBelowOne = 1.0m - new decimal(1, 0, 0, false, 28);
らしい・・・><(MS Copilotさんがそう言ってる><;)

つまり、計算するたびに値が justBelowOneであるかをチェックして、 justBelowOneであれば1.0にするって処理を挟んだ数値型を作れば、まるで実数空間のように
0.99999...... = 1.0
な数値型が作れる?><;

C#の場合
long bits = BitConverter.DoubleToInt64Bits(1.0d);
double justBelowOne = BitConverter.Int64BitsToDouble(bits - 1);
ってする事によってdoubleで1.0から最小単位だけ小さい値が得られて、それとの比較であれば、つまり
(1.0d / 49d * 49d) == justBelowOne
はtrueになるっぽい><
オレンジの発想自体はあってた><;

・・・・ということはオレンジの最初の発想である「その精度で1.0に最も近い値は1.0ってことにすればいいんじゃね?><」は、成り立つのかな?><;

ていうかさっきの記事にそのまんまの内容が追記されてるじゃん!!!!!><;

GPT-4oさんの解説のまとめ部分だけ引っ張ってくると

"・IEEE 754規格は、数値の丸め方法も標準化しており、通常は「最近接丸め」が使われます。
・0.3333333333333333 は double 型の内部表現で最も近い値に丸められ、それに 3.0 を掛けた結果も丸められて 1.0 になります。
・これにより、 0.3333333333333333 * 3.0 が 1.0 になるのです。"

マジで知らなかった><; 超恥ずかしい><;

GPT-4oさんに聞いたらものすごく詳しく解説してくれた><
説明全部省いて結論だけで言うと、C# に限らず、IEEE754で倍精度浮動小数点数型で1/3*3すれば(結果的に)1になるらしい><

浮動小数点数の比較、なんもわからん><

double a = 1.0d;
double b = a / 3.0d;
double c = 1.0d;
Console.WriteLine((b * 3.0d) == c);

もtrueでした><;

当たり前かもだけど、
(1.0d / 3.0d * 3.0d) == (1.0d - double.Epsilon)
はちゃんとtrueだった><
1.0d == (1.0d - double.Epsilon)
もtrueだった・・・><;

1/3がしたい時はdouble使おう?><(?)

mstdn.nere9.help/@orange_in_sp
"decimalに限らずfloatでも1.0/3.0*3.0の答えの値(定数)を1.0と見なすような仕組みだけあればいいんでは?><"

C# のdoubleはそうだよってこと・・・?><;

C# のdoubleでいうと、
1.0 - Double.Epsilon;
みたいなのも1.0として扱えばおk?><;

[B! programming] decimal型(十進小数)に夢を見ている輩が多すぎる - Qiita b.hatena.ne.jp/entry/s/qiita.c

これふと思ったけど、数学好きな人(皮肉)(※1)を相手に考えるなら、decimalに限らずfloatでも1.0/3.0*3.0の答えの値(定数)を1.0と見なすような仕組みだけあればいいんでは?><
(※1 なんていえばいいかわからない><; 『 実数原理主義者』とか?><;)

夜駆ける道路補修の勝手連、その名も「兄弟」 マレーシア、無許可も事故で友人亡くし結成 | 共同通信 nordot.app/1172294682424607484

"...道路に穴が多いのは、過積載のトラックが多いことや、無電柱化率が日本より高いマレーシア都市部で「電線や通信回線の埋め直し後の工事が雑な可能性がある」(地元記者)ためだ。..."

>< 

これだとファインマンさんの受け売りっぽくも見えるけど、オレンジは自分でそう考えてたら、ファインマンさんも同じような事を言ってたって構図><;
ファインマンさんが生物学関連の疑問をもって予想をたてたあと、先行研究が見つかりまさにその通りで既知であった事を、嘆くんじゃなく「我々は正しかったんだ! 素人のわりには悪くない結果だったね」って喜んだのも、メタにオレンジっぽくておもしろい><;(オレンジは同じような事を考えてたファインマンさんが居た事を知って喜んでるというかおもしろがってる><)
自分で考えてそれが正しいのか確かめる事が楽しいって所に共感できるの楽しい><

スレッドを表示
古いものを表示
:realtek:

思考の /dev/null