gpt4 book ai didi

c - C 中错误的双重计算?

转载 作者:太空狗 更新时间:2023-10-29 16:09:08 26 4
gpt4 key购买 nike

我正在使用 DevC++ 4.9,在 WinXP SP3(32 位)上运行,代码如下:

#include <stdio.h>
#include <stdlib.h>

main(int argc, char *argv[])
{
double value;

int i;

printf("Enter double: ");
scanf("%lf", &value);
i = value*100;
printf("double: %lf\n", value);
printf("int: %d\n", i);

system("PAUSE");
}

我输入了不同的值,结果如下:

测试 1:

enter image description here

测试 2:

enter image description here

测试 3:

enter image description here

为什么测试 1 和测试 2 显示不同的结果??

最佳答案

这是由于 float 舍入:

每位计算机科学家都应了解的浮点运算知识: http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html

3.07 无法用二进制精确表示。在您的情况下,它四舍五入到略小于 3.07,因此 100 * 3.07 计算为 306.9999999...,它被截断为306.

同样适用于 3.05。但是 3.06 略微向上舍入。所以 100 * 3.06 正确显示为 306。

关于c - C 中错误的双重计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7830025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com