C ++双数据类型问题

时间:2011-04-18 22:35:19

标签: c++ double

让我们考虑以下示例。 double x = 1234597000.0

当我在数据库中保存x的值时,它存储为1234600000。 当我在程序中进行减法运算时,它被视为1234600000。 你能帮我理解那里发生了什么吗?

我的系统是solaris并使用Sun Studio C ++(CC)编译器编译程序。

提前致谢。

2 个答案:

答案 0 :(得分:6)

您正在遇到IEEE浮点编码的陷阱。这个问题出现了很多。请参阅What Every Computer Scientist Should Know About Floating-Point Arithmetic

答案 1 :(得分:2)

看起来你的double正在沿着线的某个地方转换为浮点数(读取:丢失精度)。浮动只有大约6-7个有效数字IIRC,而不是十几个双打。