2 回答
TA貢獻1783條經驗 獲得超5個贊
剛剛查閱了MSDN,給出的解釋是float的精度為7 位,所以轉換會進行四舍五入。
我測試了下,沒有發(fā)現(xiàn)有樓主描述的問題,測試代碼如下:
double d = 3.1215924;
float f = (float)d;
Console.WriteLine(f.ToString());
//輸出的結果是:3.121592
d = 3.1415914;
f = (float)d;
Console.WriteLine(f.ToString());
//輸出的結果是:3.141591
d = 3.1515934;
f = (float)d;
Console.WriteLine(f.ToString());
//輸出的結果是:3.151593
TA貢獻1765條經驗 獲得超5個贊
強制轉換時,使用的是四舍五入。下面代碼可以達到你期待的轉換效果:
double x = 3.1215924;
float y = (float)(System.Math.Floor(x * 1000000) + 1) / 1000000;
- 2 回答
- 0 關注
- 524 瀏覽
添加回答
舉報
