gpt4 book ai didi

c - 如何在 C 中对 double 进行精确舍入而不用零

转载 作者:行者123 更新时间:2023-11-30 17:03:16 25 4
gpt4 key购买 nike

我有一个程序可以添加 double ,但我希望它能够显示不带零的精确数字。例如我添加了 13.4 和 10.05。它将显示 23.450000。如何在不使用 %.2lf 的情况下显示 23.45。我无法使用 %.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 ("%8.*f", fractionalDigitsOut, num);

关于c - 如何在 C 中对 double 进行精确舍入而不用零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36233424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com