请问: double b = 203.6-200; 计算得:b=3.5999999999999943 何故???????????????????????

521zhou 2007-11-23 04:23:31
c# :double b = 203.6-200; 计算得:b=3.5999999999999943 何故???????????????????????
只要是200左右的计算都会出此问题。。。。。
double b = 264.6;
double a = 200.1;

a=b-a;
...全文
78 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bettyly 2007-11-23
  • 打赏
  • 举报
回复
呵呵!不能说都不教基础了,连我们通信专业的都学计算机基础的,只不过当初老师讲的时候我都去见周公了!
f3135210 2007-11-23
  • 打赏
  • 举报
回复
现在的 计算机专业 吗的 基本不教基础了``````````

一开始就是来狂写了````

搞得有些很基础的一点都不懂`` 都得自己去从头看起```
sww5219999 2007-11-23
  • 打赏
  • 举报
回复
偶是NIIT出来的~老师也将过这个问题~一直没解决~很晕哈哈~
bad1050293 2007-11-23
  • 打赏
  • 举报
回复
double跟float 都是浮點數
因為浮點數都只是近似值所以會有你看到的誤差出現這是正常的
先去了解IEEE制定的浮點數就知道為什麼了

總之不管你是用加減乘除還是直接指定值給double或是float就一定會有誤差
如果想要做精確的計算就不能用浮點數要改用decimal
要記註浮點數只有用來計算超級大值跟超級小值才用得到 (銀河系有多少原子? )
但是很多人都搞錯了
只要一遇到要小數點的就宣告成浮點數
其實應該用decimal才對 (尤其是財務方面的計算)

如果改成 0.0001m + 0.0002m 就不會有誤差了
r_swordsman 2007-11-23
  • 打赏
  • 举报
回复

工业标准!使用 IEEE“就近舍入”模式确定类型 float 或 double 的实数的值。
vrhero 2007-11-23
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20071123/16/8e624f1e-27b2-4640-9eb0-50b543f2dfb3.html

你的问题跟这个问题是一样的...

浮点数误差...

让我奇怪的是...现在的计算机专业不教基础了?还是你们都是青鸟出来的?

110,538

社区成员

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

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

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