double db = 3.03-3; 结果居然是0.029999999999999805???怎么回事??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 改用float就可以了,或者取出来后自己再格式化。浮点的有效位比较多,所以会这样。。 要精确就不要用浮点数decimal db = 3.03m-3; double db = 3.03-3D; for (int i = 0; i <= 1; ) { Console.WriteLine("thanks"); } 要精确就不要用浮点数decimal db = 3.03m-3; 恩!谢谢大家了!!!! 怎么可能两个有效位是固定的?你去试试float跟double的取10位看哪个准?float后面都是零掉了。对于一般的运算都是float,要求精度更高的则需要用double来计算。 float有效位7位,double有效位15-16为但对于一个无限小数,不管有效位多少都没有用float与double的小数都使用的真的二进制小数对于二进制小数,只有2的负幂的和才是有限小数,才是精确的比如0.5 0.375 0.0625等你可以试一下用浮点数来表示这些小数是精确的~ Console.WriteLine(3.03 - 3);Console.WriteLine(3.03125-3);输出:0.02999999999999980.03125 C#第三方打包工具 有那些!谢谢 删除Excel表问题 请大家快帮忙看看用C#如何解析这种格式的文本文件! C#连接数据库的一个问题 关于vfp中numeric数据类型更新值的问题 高手教教我啊!在线等待回答 快速傅立叶变换在c#里有没有现成的方法调用 麻烦大家帮个忙,winform里的datagridview的checkbox问题 显示一个form2几秒钟后关闭,再显示form1 如何通过DefaultValue指定属性的枚举(enum)类型默认值, File.Delete 遇到的异常 is 用法
decimal db = 3.03m-3;
{
Console.WriteLine("thanks");
}
decimal db = 3.03m-3; 恩!
谢谢大家了!!!!
怎么可能两个有效位是固定的?你去试试float跟double的取10位看哪个准?float后面都是零掉了。对于一般的运算都是float,要求精度更高的则需要用double来计算。
但对于一个无限小数,不管有效位多少都没有用
float与double的小数都使用的真的二进制小数
对于二进制小数,只有2的负幂的和才是有限小数,才是精确的
比如0.5 0.375 0.0625等
你可以试一下用浮点数来表示这些小数
是精确的~
Console.WriteLine(3.03125-3);
输出:
0.0299999999999998
0.03125