我想知道atof()是否可以根据使用的编译器以及机器上的标准库生成不同的浮点结果。我知道由于IEEE浮动工作的方式,转换并不总是准确的,但我特别想知道在同一架构上使用各种版本的GCC时,那些输出的IEEE浮点数是否会彼此相同。
示例:
double x = atof(“78.93241”);
在各种GCC版本和各种Linux发行版(例如GCC 4.1 - > 4.6,RHEL 6.0和Debian)之间的相同架构上,x是否相同。如果没有,有什么记录这种行为?
答案 0 :(得分:2)
我认为没有理由在现实世界中atof()
不会在不同的编译器和/或不同的硬件上产生不同的结果。即使使用相同的硬件和浮点格式,您也可以获得不同的结果,因为编译器和库可能存在错误。例如,请参阅this bug。