我正在为C中的货币设置双精度或长双精度的格式。我想在美元的开头放置一个美元符号,如果需要,可以使用负数,在小数点前的第三个数字处进行逗号迭代,并在小数点前使用一个点。到目前为止,我一直在打印这样的数字:
printf("Please enter an amount: $%.2Lf\n", money);
哪个返回类似
Please enter an amount: $123456789.00
数字应该看起来像这样...
$123,456,789.00
$1,234.56
$123.45
我需要它才能使用任何数字。如果答案是实际的代码,将会有所帮助,因为我是编码领域的新手(大学里的新人),但是我知道这似乎是简单的出路,因此,如果有人想向我解释它并逐步引导我,我将不胜感激那也是。这个问题是我之前在此网站上有人问的,但我需要一些认真的帮助。
谢谢!
答案 0 :(得分:3)
也许此代码段可以为您提供帮助。它使用语言环境来实现您的目的。
#include <stdio.h>
#include <locale.h>
int main()
{
long double money;
setlocale(LC_NUMERIC, "en_US.UTF-8"); // Use thousands separators
printf("How much? ");
scanf("%Lf", &money);
printf("Formatted: $%'.2Lf\n", money); // Notice the ' character
}
语言环境几乎听起来像。它们处理 local 标准,例如默认的时间格式。当您使用setlocal
时,将发送一个类别和一个 locale 作为参数。这些类别是:
有许多不同的语言环境。 en_US.UTF-8是其中之一。