2

我正在转换数据以进行导出。

该文件以美分而不是美元显示数据。

所以 1234.56 需要打印为 123456

有没有办法做到这一点string.Format

或者是乘以 100 的唯一解决方案?

4

4 回答 4

3

您可以使用 string.Replace(".", string.empty)。但这并不是完全本地化的。您可以添加检查“,”以及国际货币的情况。但这就是我会做的。

[编辑]

也刚刚发现:http: //msdn.microsoft.com/en-us/library/dwhawy9k.aspx

“N”数字说明符允许您更改用于分隔整数和小数部分的符号。

<code>

decimal num = 123.456m;
NumberFormatInfo ci = CultureInfo.CurrentCulture.NumberFormat;
ci.CurrencyDecimalSeparator = " "; // You can't use string.Empty here, as it throws an exception.
string str = num.ToString("N", ci).Replace(" ", string.Empty);

</code>

像这样的东西应该可以解决问题,并且是本地化的!

于 2013-03-18T20:37:57.973 回答
2

那是渲染问题。当然,乘以 100 得到美分就可以了。

美国使用小数点来区分美元和美分。但并非所有国家都这样做。您的“乘以 100”解决方案仅适用于使用 100 个小数单位表示单个整数的货币。(日元在日本并非如此。)

于 2013-03-18T20:42:50.447 回答
0

If it is that simple, just do String.Replace('.','');

于 2013-03-18T20:39:16.900 回答
0

如果您知道这些值将始终有 2 个小数位,那么这样做非常简单

var strVar = 1234.56;
var somevalues   = string.Format("{0:######}", strVar * 100);

output = 123456

于 2013-03-18T20:46:00.610 回答