当前位置:编程学习 > C#/ASP.NET >>

关于浮点计算的问题

var a = Math.Floor(0.58 * 100);

a 的结果是多少?

欢迎讨论.
--------------------编程问答-------------------- 我没运行计算,可能是57或者58.
浮点数本身计算就不精确,这个学过点基础知识的人都会觉得没什么可谈的。 --------------------编程问答--------------------  

 57? --------------------编程问答--------------------
var a = Math.Floor((decimal)0.58 * 100);//这样才会输出58

更多信息参考:http://msdn.microsoft.com/zh-cn/library/e0b5f0xb.aspx --------------------编程问答-------------------- 57.0 --------------------编程问答--------------------

var a = 0.58;
for(var j=0;j<99;j++)
   a+=0.58;
document.write(a);
//浮点数的出来的计算结果为57.99999999999988
--------------------编程问答-------------------- 57 --------------------编程问答-------------------- 0.58f 实际上是0.579999...的近似值  float val=0.58f  Console.Write(val+0.0); 可以看到 --------------------编程问答--------------------
引用 4 楼 happy09li 的回复:
57.0
为什么是57?? --------------------编程问答--------------------
引用 8 楼 thegreentree 的回复:
Quote: 引用 4 楼 happy09li 的回复:

57.0
为什么是57??

浮点会舍去小数点后面的数的,double则不会,double则会四舍五入,这个msdn里都有详细讲的,以前有个帖子也问,里面还有曺版主的详细解释呢 --------------------编程问答-------------------- 每天回帖即可获得10分可用分! --------------------编程问答-------------------- .58 不能以完整的二进制表示,被截尾了。
所以实际值小于 .58. --------------------编程问答-------------------- --------------------编程问答--------------------
引用 7 楼 hwenycocodq520 的回复:
0.58f 实际上是0.579999...的近似值  float val=0.58f  Console.Write(val+0.0); 可以看到
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,