c++ - 存储在具有相同整数部分的两个变量中的值的差异

标签 c++ int double type-conversion

<分区>

我试图找到 10^12 的立方根,并在 C++ 中使用了以下代码。令我惊讶的是,返回的值是不同的。谁能帮我解决这个问题。

输出:10000 9999

    int y;
    double x=pow(1000000000000, 1./3);
    double r=floor(x);
    y=(int)r;
    cout<<x<<" ";
    cout<<y;

最佳答案

你的 floor操作是这里的问题。如果返回值实际上是(由于精度错误)x = 9999.999 怎么办? floor(x)将返回 9999 而 cout << x根据其内部精度设置直接打印 float ,因此 cout << x进行隐式舍入,这就是 10000 显示在那里的原因。

通过执行以下操作尝试将 x 正确舍入为 int:

int y;
double x=pow(1000000000000, 1./3);
y=(int)(x+0.5); //Proper rounding
cout<<x<<" ";
cout<<y;
return 0;

关于c++ - 存储在具有相同整数部分的两个变量中的值的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24159367/

相关文章:

c++ - 将 Cxx vector 转换为 Julia vector

我可以将 string 和 int 值压入堆栈吗?

c - 编写一个程序,读取一个整数。输出另一个整数,其中偶数位保留,奇数位减 1,

c - 《C 编程语言》第二版 K&R 第 1 章 1.5.1 中的示例,

c# - 从 float 到 double 并返回到 float 的转换不会丢失精度

java - 为什么我在 if 语句中定义 double 时遇到问题?

C++ If then else 条件被跳过

c++ - Xcode C++ 错误阻止进一步输出超过 srand()

c++ - c++ 和 python 中的算法相同但输出不同

c# - 使用 (int) 和 Convert.ToInt(32) 将 double 转换为 int 不同的结果