很简单的问题

昨日浮云 2012-06-12 05:22:21

为什么我的float 保留了四位小数 转换成string 最后两位小数就成0了呢
...全文
140 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋的红果实 2012-06-13
  • 打赏
  • 举报
回复
楼上都已经说清了,回答问题得2分
熙风 2012-06-13
  • 打赏
  • 举报
回复
float s = 3.1415926f;
string sou = s.ToString("F4");

保留几位小数F后面的数字就填几
stonespace 2012-06-13
  • 打赏
  • 举报
回复
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");


[Quote=引用 3 楼 的回复:]

引用 1 楼 的回复:

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


folat = 10814.9619;
string quantityString = quantity.ToString("f4");
quantityString 确为10814.9600
[/Quote]
jmj49314 2012-06-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
C# code
float quantity= 10814.9619f;
string quantityString = Convert.ToDouble(quantity).ToString("f4");

10814.9619
[/Quote]
小数位,不准确
jmj49314 2012-06-12
  • 打赏
  • 举报
回复
float quantity= 10814.9619f;
string quantityString = Convert.ToDouble(quantity).ToString("f4");

10814.9619
昨日浮云 2012-06-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

float s = 3.1415926f;
var sou = s.ToString("f4");
[/Quote]

folat = 10814.9619;
string quantityString = quantity.ToString("f4");
quantityString 确为10814.9600
stonespace 2012-06-12
  • 打赏
  • 举报
回复
float只有4个字节,它的精确度只有7位有效数字,如果你的float如果超过10000,那么就无法保证有4位小数的精确度,

当然,你可以用ToString("f4")来输出后面的小数位,但可能是不精确的,
  • 打赏
  • 举报
回复
float s = 3.1415926f;
var sou = s.ToString("f4");

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧