誰でもここで何が起こっているのか説明してもらえますか:
using System;
using System.Text;
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
object o = 1000000.123f;
float f= Convert.ToSingle(o);
double d = Convert.ToDouble(f);
Console.WriteLine(f.ToString("r"));
Console.WriteLine(d.ToString("r"));
Console.ReadLine();
}
}
}
どの出力:
1000000.13
1000000.125
私は期待しました:
オブジェクト o は基本的な float 型を持ちます (オブジェクト {float} として型付けされているウォッチ ウィンドウを観察すると、発生するようです)。
その 1000000.123f は 1000000.125 として f に格納されます (32 ビットでの IEEE754 近似値?)
double が 1000000.125 も格納すること ( f に期待したものが含まれていないように見えても、発生するようです)
ToString で往復形式を要求すると、どちらの場合も 1000000.125 が返されます。
fをひもでつなぐときに1000000.13を取得するために私が間違っていることを誰かに教えてもらえますか?