1

我有一个需要转换为货币的值列表,例如“12000”、“12345”、“123456”(“120.00”、“123.45”、“1234.56”)。我知道的唯一方法是将值转换为字符串,将第一个 strlen()-2 字符复制到一个字符串(美元),将剩余的两位数字复制到另一个字符串(美分),然后将它们写入如下:

printf("%s.%s", dollars, cents);
4

3 回答 3

6
printf("$%.2f", value/100);
于 2009-02-02T19:05:06.570 回答
3

不要使用浮点数来存储或表示货币金额。使用多头(如果您需要超过 40 亿美分,请使用多头)。以最小可用单位表示货币通常是个好主意,例如使用 10000 表示 100Euro)。那么格式化这些值的正确方法(假设 100 美分兑欧元或美元)是:

printf( "%d.%02d", value/100, value%100);

希望这是有道理的...

用货币价值计算是一个复杂的主题,但你不能出错,因为你总是希望对最接近的货币单位(例如美分)有一个四舍五入的答案,并始终确保计算四舍五入误差(例如,除以 1 美元您应该以三种方式结束 33+33+34 或 33+33+33+1)。

于 2009-02-03T08:14:33.670 回答
0

要将小于 $1.00 的值加上 0 前缀,请使用:

printf("$%0.2f", value / 100.0);

如果 value = 25,这将导致 $0.25

于 2009-02-05T23:45:10.857 回答