0
任何人都可以請幫助我明白,爲什麼浮動的輸出是四捨五入小數?鑄造從「雙浮動」舍入小數位
碼 -
static void Main(string[] args)
{
float f = (float)Math.Round(Convert.ToDouble("270825.27000000000000"), 2);
double d = Math.Round(Convert.ToDouble("270825.27000000000000"), 2);
Console.WriteLine("Float - " + f.ToString());
Console.WriteLine("Double - " + d.ToString());
Console.Read();
}
輸出 -
在此先感謝。
因爲浮動不如雙精度? –
從https://msdn.microsoft.com/zh-cn/library/system.single:「單個值最多有7位精度的十進制數字,但內部保留最多9位數字。」 –
在賦值(轉換)其右側的同一個值之前('Math.Round(...)')。不要用「四捨五入」或類似的東西來掩蓋問題。您只需將'double'分配給'float'並因此導致*精度*。 – Sinatr