编译选项加上
-fno-fast-math -ffloat-store
试试
【 在 Madlee 的大作中提到: 】
: 标 题: 关于浮点数误差:
: 发信站: 水木社区 (Sun Jul 7 11:28:54 2024), 站内
:
: 这样一段C++程序:
:
: double cvt(int v) {
: return double(v)/10000.0;
: }
:
: for (;;) {
: double x = cvt(190000);
: }
:
:
:
: 运行几万次的时候,大部分时候x都是19.0000,但有时候会出现 19.000000001,这可能是什么原因造成的?
: 用的是Linux g++ 9.0 -O3 编译得到的。
: 原来我以为浮点误差是因为误差的积累导致的,但象这样的code,输入完全一致的时候也会出现不同,这可能是什么原因造成的?是因为硬件造成的吗?用-O2是否可以避免?还是说浮点误差就是不能避免的?
:
: 谢谢。
:
: --
:
: ※ 来源:·水木社区
http://www.mysmth.net·[FROM: 45.86.208.*]
--
FROM 223.72.73.*