谁能向我解释这里发生了什么:
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} 的监视窗口)
1000000.123f 将作为 1000000.125 存储在 f 中(32 位的 IEEE754 近似值?)
double 也将存储 1000000.125 (即使 f 似乎不包含我的预期,似乎也会发生)
在这两种情况下,要求 ToString 上的往返格式都会给我 1000000.125。
谁能告诉我在串出 f 时我做错了什么得到 1000000.13?