在我的应用程序中,执行计算,将文本显示到GUI。 应用程序将用户给定的数量乘以一个定义的数字(Say 0.85)来创建一个总数(用户输入2,应用程序输出2 x 0.85)。
由于显示的数字是货币的数字,我正在尝试正确格式化文本以使其可读和正确。
到目前为止,我已经尝试了
.ToString("N2");
这导致另外两个零附加到图的末尾。
问题可以在这里看到:
正如您所看到的,正确的值是.68(或0.68英镑),我的文字显示为68.00英镑 从“ToString”中取出“N2”确实有帮助,但我仍然留下68英镑。
我知道这并不像听起来那么微不足道,但这是我以前从未需要考虑的事情,而且让我长时间思考它。
谢谢!
注意:数据存储为double,之前是浮点数,应用程序可以灵活更改。我也不需要货币图标,因为我手动提供,只需要格式化。
答案 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);