【发布时间】:2013-06-20 00:08:34
【问题描述】:
我想将精度高达 4 位的双精度值的小数部分转换为整数。但是当我这样做时,我会失去精度。有什么办法可以让我得到精确的值吗?
#include<stdio.h>
int main()
{
double number;
double fractional_part;
int output;
number = 1.1234;
fractional_part = number-(int)number;
fractional_part = fractional_part*10000.0;
printf("%lf\n",fractional_part);
output = (int)fractional_part;
printf("%d\n",output);
return 0;
}
我期望输出为 1234,但它给出了 1233。请提出一种方法,以便我可以获得所需的输出。我想要C语言的解决方案。
【问题讨论】:
-
您只是在同一个句子中使用了“double”或“float”和“precise value”这两个词。糟糕的魔力。你的方法没问题,但在转换为 int 之前添加 0.5,因为这可能是截断而不是四舍五入。更好的是,明确使用 round()。这将为您提供最接近的价值。 "The" 精确值不存在。
标签: c double type-conversion precision floating