gpt4 book ai didi

c - 在 C 中只显示 float 25.50 的小数点的最简单方法是什么?

转载 作者:行者123 更新时间:2023-12-01 23:48:10 24 4
gpt4 key购买 nike

刚从 C 开始。例如给定数字 float $25.50。我想分别显示美元和美分。所以对于美元,我可以使用 %.0f 来显示 25。我怎样才能只显示 50?

最佳答案

您可能正在寻找 modf()来自 <math.h> .这会将值拆分为整数部分和小数部分。

double amount = 25.50;
double dollars;
double cents = modf(amount, &dollars);

然后您可以只打印分数:

printf("%.2f", cents);

或者,如果您不再需要分数值:

printf("%.2f", modf(amount, &dollars));

没有办法只使用 printf()仅打印数字的小数部分;您必须修改传递给它的值以进行打印,以便它只看到小数部分。

(请注意,您应该在拆分值之前对其进行舍入,如他的 chux 中的 answer 所示。)

对于许多合理的货币值,您可能会使用 cents = amount - (int64_t)amount或类似的东西——但更好的方法是使用 modf() .

(注意:还有一个 fmod() 函数用于计算两个 double 值的模数,即 % 运算符的浮点模拟。)

另外,不要使用 float用于真实的货币计算——至少,不是会计风格的计算。您或多或少可以将高达 99,999.99 美元的值可靠地表示为小数点后两位,但超出此范围的任何值都是不可靠的。 (在一次偶然的测试中,将 0.01 添加到 262144.00 并没有改变结果。)如果必须使用 float ,则使用 double .

关于c - 在 C 中只显示 float 25.50 的小数点的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28114295/

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