Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C语言中,如何精确舍入双精度的零_C - Fatal编程技术网

在C语言中,如何精确舍入双精度的零

在C语言中,如何精确舍入双精度的零,c,C,我有一个程序,可以添加两个数字,但我希望它能够显示准确的数字,而不显示零。例如,我添加了13.4和10.05。它将显示23.45万。如何使其显示23.45而不使用%.2lf。我不能使用%.2lf,因为如果我加上12.4和10.1,它将显示22.50,但它只需要显示22.5。很抱歉英语不好。下面的内容并不是一个完整的解决方案,但提供了一些关于如何解决问题的提示 你想要的只是通过计算你的输入数字有多少个小数位数来实现——这决定了你需要在输出中有多少个小数位数。显然,只有当你有数字的字符串表示时,这才

我有一个程序,可以添加两个数字,但我希望它能够显示准确的数字,而不显示零。例如,我添加了13.4和10.05。它将显示23.45万。如何使其显示23.45而不使用%.2lf。我不能使用%.2lf,因为如果我加上12.4和10.1,它将显示22.50,但它只需要显示22.5。很抱歉英语不好。

下面的内容并不是一个完整的解决方案,但提供了一些关于如何解决问题的提示

你想要的只是通过计算你的输入数字有多少个小数位数来实现——这决定了你需要在输出中有多少个小数位数。显然,只有当你有数字的字符串表示时,这才有效

/* necessary casts removed for clarity */
int fractionalDigs1 = arg1 + strlen(arg1) - strchr (arg1, '.') - 1;
int fractionalDigs2 = arg2 + strlen(arg2) - strchr (arg2, '.') - 1;
对于两个数字的加法,您需要让输出分数位数计算两个输入参数分数的最大值,以便将总和相乘—由您决定

int fractionalDigsOut = max (fractionalDigs1, fractionalDigs2);
具有非恒定字段宽度的输出与字段宽度格式说明符
*
类似(
*
从参数列表中获取参数并将其用作字段宽度):


“它表明”是使用什么的手段
printf()
22.5
22.50
不同,因为
22.5
例如也可以是
22.49
22.51
四舍五入。因此,如果您实际拥有
22.50
,则显示
22.5
将失去精度(“信息”)。如果您有
22.50
,为什么要显示
22.5
?为什么要避免
%.2lf
格式?
printf ("%8.*f", fractionalDigitsOut, num);