我正在转换数据以进行导出。从货币中删除小数点
该文件以美分而非美元显示数据。
于是1234.56需要将打印为123456
有没有办法做到这一点与string.Format
?
或者是唯一的解决方案乘以100?
我正在转换数据以进行导出。从货币中删除小数点
该文件以美分而非美元显示数据。
于是1234.56需要将打印为123456
有没有办法做到这一点与string.Format
?
或者是唯一的解决方案乘以100?
您可以使用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>
这样的事情应该做的伎俩,并本地化!
吮吸你不能使用空字符串作为分隔符,但这似乎工作得很好。尽管如此,我必须创造一种新的文化,因为现有的文化是只读的。 – CaffGeek 2013-03-18 21:20:05
是的,我将编辑帖子以包括您不能使用空白分隔符。 – 2013-03-18 21:21:41
如果它就是这么简单,只要做String.Replace('.','');
这是一个渲染问题。当然,乘以100得到美分即可完成工作。
美国使用小数点将美元与美分分开。但并非所有国家都这样做。您的“乘以100”解决方案仅适用于使用100个小数单位表示单个整数的货币。 (不是在日本的情况下日元)。
这就是为什么我想要一个不乘以100的解决方案,这就是为什么我正在寻找'string.Format'解决方案。 – CaffGeek 2013-03-18 20:48:18
查看我的解决方案底部;它是本地化和干净的。 – 2013-03-18 20:50:47
,如果你知道值总是有2位小数,然后做到这一点很简单
var strVar = 1234.56;
var somevalues = string.Format("{0:######}", strVar * 100);
output = 123456
而且-1因为.. 。 什么?只是downvoting并不完全有帮助。 – CaffGeek 2013-03-18 20:48:37
你为什么要这么做? – 2013-03-18 20:51:57
+1(抵消downvote)。这个问题没有错。 – 2013-03-18 20:56:17