■No82952 (774RR さん) に追記 > 1.000000000000 と > 0.999999999999 と > 1.000000000001 とは違う数値になっちゃう。 1.000000000001 は、内部的には (2^0 +2^-40 +2^-44 +2^-45 +2^-48 +2^-49) 相当ですね。 「^」は、VB/VBA の冪演算子。(C# だと Math.Pow) Double バイナリを 2 進数で表記 1.000000000000 → 0 01111111111 0000000000000000000000000000000000000000000000000000 0.999999999999 → 0 01111111110 1111111111111111111111111111111111111101110011010001 1.000000000001 → 0 01111111111 0000000000000000000000000000000000000001000110011000 0.99999999999999978 → 0 01111111110 1111111111111111111111111111111111111111111111111110 0.99999999999999989 → 0 01111111110 1111111111111111111111111111111111111111111111111111 1.00000000000000000 → 0 01111111111 0000000000000000000000000000000000000000000000000000 1.00000000000000020 → 0 01111111111 0000000000000000000000000000000000000000000000000001 上記の Double バイナリを 10進小数に復元 1.000000000000 → 1.00000000000000000000000000000000000000000000000000000 0.999999999999 → 0.99999999999900002212172012150404043495655059814453125 1.000000000001 → 1.00000000000100008890058234101161360740661621093750000 0.99999999999999978 → 0.99999999999999977795539507496869191527366638183593750 0.99999999999999989 → 0.99999999999999988897769753748434595763683319091796875 1.00000000000000000 → 1.00000000000000000000000000000000000000000000000000000 1.00000000000000020 → 1.00000000000000022204460492503130808472633361816406250
- Child Tree -