更改为货币格式的最佳方法是什么?

时间:2009-02-02 19:02:47

标签: c currency

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

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

3 个答案:

答案 0 :(得分:6)

printf("$%.2f", value/100);

答案 1 :(得分:3)

不要使用浮动来存储或代表金额。使用longs(如果你需要超过40亿美元使用llongs)。通常最好用最小可用单位表示货币,例如使用10000表示100Euro)。那么格式化这些值的正确方法(假设100美分兑换欧元或美元)是:

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

希望有道理......

使用货币值进行计算是一个复杂的主题,但是你不能错误的是你总是希望对最近的货币单位(例如分)有一个舍入的答案,并始终确保计算舍入误差(例如,除以1美元三种方式你最终会得到33 + 33 + 34或33 + 33 + 33 + 1)。

答案 2 :(得分:0)

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

printf(“$%0.2f”,值/ 100.0);

如果值= 25

,这将导致$ 0.25