日期:2014-05-18  浏览次数:20691 次

很简单的问题

  为什么我的float 保留了四位小数 转换成string 最后两位小数就成0了呢

------解决方案--------------------
float s = 3.1415926f;
var sou = s.ToString("f4");
------解决方案--------------------
float只有4个字节,它的精确度只有7位有效数字,如果你的float如果超过10000,那么就无法保证有4位小数的精确度,

当然,你可以用ToString("f4")来输出后面的小数位,但可能是不精确的,
------解决方案--------------------
C# code
float quantity= 10814.9619f;
            string quantityString = Convert.ToDouble(quantity).ToString("f4");

------解决方案--------------------
探讨
C# code
float quantity= 10814.9619f;
string quantityString = Convert.ToDouble(quantity).ToString("f4");

10814.9619

------解决方案--------------------
float类型只有4个字节,它的精度只有6~7位有效数字,所以你从高到低数7个数字,只有这7个数字是准确的,到第8个数字的时候肯定已经是不准确了,

10814.9619到第7位是小数点后两位,7位以后就不准确了,如果你想精确到7个数字之后,就得用double,double有8个字节,有16个有效数字,

double quantity = 10814.9619;
string quantityString = quantity.ToString("f4");


探讨

引用:

float s = 3.1415926f;
var sou = s.ToString("f4");


folat = 10814.9619;
string quantityString = quantity.ToString("f4");
quantityString 确为10814.9600

------解决方案--------------------
float s = 3.1415926f;
string sou = s.ToString("F4");

保留几位小数F后面的数字就填几
------解决方案--------------------
楼上都已经说清了,回答问题得2分