如何解决我的转换类型问题?最后的密码是四舍五入的

How to solve my conversion type problem? The last cipher are rounded

我遇到了这个问题: x_1 是一个具有此值的整数:

x_1: 463606075

我要得到的是46.3606075,也就是同一个数除以10000000。 如果我将我的 int x_1 转换为 double,我得到:

x_1: 463606075.000000

现在,如果我除以 10000000(即 10^7),最后的密码将四舍五入: x_1: 46.360608,这不是 46.3606075(...075 四舍五入为 ...08)。我不想要任何类型的认可。我怎么解决这个问题?谢谢大家的帮助!

最后一位小数显示为四舍五入,因为您很可能只打印前 6 位小数(这是 printf%f 格式说明符的默认精度)。

此外,请不要忘记浮点类型不能准确表示每个值(参见 this post 示例)。你的 double 的确切值是 46.3606075000000004138200893066823482513427734375。您可以使用以下内容轻松地为自己测试:

#include <stdio.h>

int main(void){
    int x = 463606075;
    double y = (double) x / 10000000.0;
    printf("%.100f", y);
}

最好 post 整个代码。

您似乎使用了 printfcout 命令来查看 x_1 的值。 如果您使用 printf("%f", x_1); 那么结果必须是 46.360608。 如果你想看到更多的数字,你可以这样使用:

printf ("%.7f", x_1);