使用浮点值我不知道为什么我的C编译器或系统意外行为。没有让它变得如此混乱。这里是一个简单的程序,用于输入浮点值并打印。浮点值输入错误
#include <stdio.h>
int main()
{
float num;
printf("Enter float value ");
scanf("%f", &num);
printf("Value = %f", num);
return 0;
}
在多次运行相同的代码给我不同和怪异的输出。以下是一些示例运行。
样品试验#1 正确的输出
输入浮点值12.0312
值= 12.031200
样品试验#2 不正确的和意想不到的输出
输入浮点值324.123
值= 324.122986
样品试验#3 错误和意外的输出
输入浮点值945.1234
值= 945.123413
我不知道为什么系统在最后添加一些垃圾值。我在code :: blocks中使用GNU GCC编译器。
系统不是”添加垃圾数值“。浮点表示本质上不精确(它们不代表实数,它们表示有理数的子集)。 –
http://floating-point-gui.de/ – pm100
感谢大家明确表示。并为链接。这是我发现我的问题的正确答案http://stackoverflow.com/questions/588004/is-floating-point-math-broken。如果其他人有这个问题,这个链接可以帮助。 –