【发布时间】:2017-01-27 03:35:47
【问题描述】:
我的任务是不使用外部库在 C 中重新创建 printf。我正在尝试以 6 位小数的精度实现 %f 功能。所以基本上,如果我将 15.2554 传递给 printf 函数,应该打印“15.255400”。相反,打印的是“15.255399”。我的查找小数位的代码是这样实现的:
print_function(double input){
int i = 0;
int temp;
double temp_dub;
char temp_char;
temp = (int)input;
temp_dub = input - temp;
while (i < 6){
temp_dub = temp_dub * 10;
temp = (int) temp_dub;
temp_char = (char) (temp+48)
write(1,&temp_char,1);
i++;
temp_dub -= (int) temp_dub;
}
return;
}
谁能告诉我为什么我无法得到尾随零,而是这个数字略低于我输入的 15.554?
【问题讨论】:
-
C和C++是不同的语言。显然不需要一个标签。 -
您的函数显示 15.554 的垃圾。确保您发布了正确的代码 sn-p。
-
除非我弄错了,否则这段代码可以在 C 或 C++ 中运行。
-
DYZ。这个确切的代码在我的机器上工作并打印出 15.255399 而不是 15.255400
-
至少,您的代码不会打印任何句点。再检查一遍。如果您按照 Ari0nhh 的答案中的建议进行更改,它会起作用。 (48 应该添加到
temp_char,而不是temp。)