我有一个值列表,例如“12000”,“12345”,“123456”需要转换为货币(“120.00”,“123.45”,“1234.56”)。我知道的唯一方法是将值转换为字符串,将第一个strlen() - 2个字符复制到一个字符串(美元),将剩余的两个数字复制到另一个字符串(美分),然后将它们写为以下内容:
printf("%s.%s", dollars, cents);
答案 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