关于浮点计算的问题

huwei001982 2013-11-14 09:31:11
var a = Math.Floor(0.58 * 100);

a 的结果是多少?

欢迎讨论.
...全文
258 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
junlinfushi 2013-11-15
  • 打赏
  • 举报
回复
引用 7 楼 hwenycocodq520 的回复:
0.58f 实际上是0.579999...的近似值 float val=0.58f Console.Write(val+0.0); 可以看到
Teln_小凯 2013-11-15
  • 打赏
  • 举报
回复
Saleayas 2013-11-15
  • 打赏
  • 举报
回复
.58 不能以完整的二进制表示,被截尾了。 所以实际值小于 .58.
PaulyJiang 2013-11-15
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
Regan-lin 2013-11-14
  • 打赏
  • 举报
回复
引用 8 楼 thegreentree 的回复:
引用 4 楼 happy09li 的回复:
57.0
为什么是57??
浮点会舍去小数点后面的数的,double则不会,double则会四舍五入,这个msdn里都有详细讲的,以前有个帖子也问,里面还有曺版主的详细解释呢
thegreentree 2013-11-14
  • 打赏
  • 举报
回复
引用 4 楼 happy09li 的回复:
57.0
为什么是57??
智商余额不足 2013-11-14
  • 打赏
  • 举报
回复
0.58f 实际上是0.579999...的近似值 float val=0.58f Console.Write(val+0.0); 可以看到
mmqw 2013-11-14
  • 打赏
  • 举报
回复
57
  • 打赏
  • 举报
回复

var a = 0.58;
for(var j=0;j<99;j++)
   a+=0.58;
document.write(a);
//浮点数的出来的计算结果为57.99999999999988
熙风 2013-11-14
  • 打赏
  • 举报
回复
57.0
全栈极简 2013-11-14
  • 打赏
  • 举报
回复
var a = Math.Floor((decimal)0.58 * 100);//这样才会输出58
更多信息参考:http://msdn.microsoft.com/zh-cn/library/e0b5f0xb.aspx
Mirror然 2013-11-14
  • 打赏
  • 举报
回复
57?
cheng2005 2013-11-14
  • 打赏
  • 举报
回复
我没运行计算,可能是57或者58. 浮点数本身计算就不精确,这个学过点基础知识的人都会觉得没什么可谈的。

110,546

社区成员

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

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

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