如何在C中用逗号格式化货币?

我想在C中将Long Float格式化为货币。我想在开头放置一个美元符号,逗号在十进制之前迭代每三位数,并在十进制之前加一个点。 到目前为止,我一直在打印这样的数字:

printf("You are owed $%.2Lf!\n", money);

它返回了类似的东西

You are owed $123456789.00!

数字看起来应该是这样的

$123,456,789.00
$1,234.56
$123.45

任何答案都不需要在实际代码中。 你不需要勺子喂食。 如果有与c相关的细节会有所帮助,请提及。 其他伪代码也没问题。

谢谢。

你的printf可能已经能够用' flag '自己做了。 但是,您可能需要设置区域设置。 这是我机器的一个例子:

 #include  #include  int main(void) { setlocale(LC_NUMERIC, ""); printf("$%'.2Lf\n", 123456789.00L); printf("$%'.2Lf\n", 1234.56L); printf("$%'.2Lf\n", 123.45L); return 0; } 

并运行它:

 > make example clang -Wall -Wextra -Werror example.c -o example > ./example $123,456,789.00 $1,234.56 $123.45 

这个程序以你想要的方式工作在我的Mac(10.6.8)和Linux机器(Ubuntu 10.10)上我刚试过。

我不认为有这样做的Cfunction,但你可以自己写吗? 说float price = 23234.45 。 首先用逗号打印(int)price ,打印小数点; 然后对于小数部分,执行printf("%d", (int)(price*100)%100);