如何在没有零的情况下完全舍入为C中的双打

时间:2016-03-26 08:56:45

标签: c

我有一个添加双打的程序,但是我希望它能够使它显示没有零的确切数字。例如,我添加了13.4和10.05。它将显示23.450000。如何在不使用%。2lf的情况下显示23.45。我不能使用%。2lf,因为如果我添加12.4和10.1它将显示22.50但它只需要显示22.5。抱歉英文不好。

1 个答案:

答案 0 :(得分:0)

以下内容不是一个完整的解决方案,而是一些关于如何处理问题的提示。

您想要的只能通过首先计算输入数字的小数位数来实现 - 这决定了您在输出中需要多少小数位数。显然,只有你的数字的字符串表示才会有效。

/* 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 ("%8.*f", fractionalDigitsOut, num);