c++ - 将整数除以 double 会丢失精度

标签 c++ math

<分区>

我试图将一个整数除以一个 double 值,但我相信它会失去精度..

#include <cmath>
#include <cstdio>
int main()
{
    double t=5465/54.0;
    double t1=(double)5465/(double)(t);
    double t3 = 5465.0/101.203;
    printf("%lf %lf %lf\n",t,t1,t3);
    return 0;
}

t3 = 54.0003 的上述代码值符合预期,但对于 t1,它变为 54 而不是获得与 t3 相同的值。 我不知道我在做什么错误

最佳答案

5465/54.0 的值为 101.203703704(小数点后 9 位)。在你的代码中你正在使用这个

 double t3 = 5465.0/101.203;

截断

的结果
 double t=5465/54.0;

101.203 出于某种未知原因。因此,由于截断,您正在计算 2 个不同的值。本质上,您期望这 2 个计算是相同的,但是

 5465.0/101.203 != 5465/101.203703704

关于c++ - 将整数除以 double 会丢失精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13001759/

相关文章:

python - 将 python、numpy 和 scipy 代码转换为 C++ 兼容代码?

c++ - 架构 x86_64 的 undefined symbol : "Shape::get_area()", 从 : votable for shape in shape. o 引用

c++ - 如何在 GLSL 中使用 RGBA16?

c++ - 如何从文本文件中读取字符串类型(不是数字)并将数据存储在 C++ 数组中?

python - 如何解决 Python 中的递归关系

java - 寻找涉及数学的平衡括号

c++ - 我如何只接受大写字母作为用户输入?

c++ - Linux 上的键盘键代码表

math - 如何从任意多边形中减去圆

c++ - GCC 中 cmath 的 pow() 的正确性