如何根据货币正确格式化文本

时间:2010-06-28 22:49:14

标签: c# formatting currency textbox

在我的应用程序中,执行计算,将文本显示到GUI。 应用程序将用户给定的数量乘以一个定义的数字(Say 0.85)来创建一个总数(用户输入2,应用程序输出2 x 0.85)。

由于显示的数字是货币的数字,我正在尝试正确格式化文本以使其可读和正确。

到目前为止,我已经尝试了

.ToString("N2");

这导致另外两个零附加到图的末尾。

问题可以在这里看到:

Error!

正如您所看到的,正确的值是.68(或0.68英镑),我的文字显示为68.00英镑 从“ToString”中取出“N2”确实有帮助,但我仍然留下68英镑。

我知道这并不像听起来那么微不足道,但这是我以前从未需要考虑的事情,而且让我长时间思考它。

谢谢!

注意:数据存储为double,之前是浮点数,应用程序可以灵活更改。我也不需要货币图标,因为我手动提供,只需要格式化。

3 个答案:

答案 0 :(得分:2)

试试这个:

string.Format("{0:C}", money_value);

这也有效:

.ToString("C");

(我意识到这将包括货币符号,但是OP并没有说这是一个问题,只是没有必要。)

如果你想全力以赴,你可以这样做:

string.Format(ui_culture, “{0:C}”, money_value);

其中ui_culture是与货币相关联的文化。

已编辑添加:

这种格式化的好处在于它可以管理所有标点符号。

我不确定货币符号是否始终是主角。如果是这样,您可以删除它:

string.Format(ui_culture, “{0:C}”, money_value).substring(1);

答案 1 :(得分:1)

乍一看,看起来你已经将你的值(0.68)乘以100得到68.00,这是正确的。但是,您的数量似乎为80,应该为您提供54.40的值。

如果你乘以2那么你应该得到1.70。

答案 2 :(得分:0)

您需要使用带有IFormatProvider参数的ToString重载:

double value = 80;
string ukCurrency = value.ToString("N2", CultureInfo.CreateSpecificCulture("en-GB"));

我实际上不确定这是否包含货币字符(未经测试的示例)。我希望使用“N2”格式字符串将剥离货币字符......但它可能不会。跳过字符串的第一个字符可能很容易:

ukCurrency = ukCurrency.Substring(1);