- 主题:for (double j = -12; j < 12 + 0.2; j += 0.2),居然发现会循
for (double j = -12; j < 12 + 0.2; j += 0.2),居然发现会循环到12.2 !为啥?
--
FROM 115.238.75.*
研究一下ieee标准
【 在 angusta 的大作中提到: 】
: for (double j = -12; j < 12 + 0.2; j += 0.2),居然发现会循环到12.2 !为啥?
: --
: FROM 115.238.75.*
--
FROM 106.121.187.*
不懂这么高深的啊。
直接比较好像也是对的。
难道是累加误差?
【 在 GoGoRoger 的大作中提到: 】
: 研究一下ieee标准
--
FROM 115.238.75.*
就是有误差。注意0.2(1/5)这个数在二进制里面是无尽小数,二进制表示肯定是不精确的。
【 在 angusta (big toe) 的大作中提到: 】
: 不懂这么高深的啊。
: 直接比较好像也是对的。
: 难道是累加误差?
: ...................
--
FROM 123.112.64.*
浮点数最好不要做精确的大小比较,这是码农的入门知识啊,随便哪本讲到浮点数的书都会注明这点的
--
修改:z16166 FROM 123.115.163.*
FROM 123.115.163.*
浮点数直接用<,>来比大小可能会得到你预期之外的结果
【 在 angusta (big toe) 的大作中提到: 】
for (double j = -12; j < 12 + 0.2; j += 0.2),居然发现会循环到12.2 !为啥?
--
FROM 123.118.101.172
浮点数比较相等应该是靠两数相减然后小于一个很小的数来判断。。
【 在 angusta (big toe) 的大作中提到: 】
: for (double j = -12; j < 12 + 0.2; j += 0.2),居然发现会循环到12.2 !为啥?
--
FROM 223.104.97.*