固定数量的小数位,没有小数

时间:2014-07-09 21:51:57

标签: c# string-formatting

我试图屏蔽小数值。

我希望19.76转换为1976000,甚至1976

另一个例子是500.53将成为50053000

我想使用ToString重载而非某种转换方法,因为它更适合我的xml设置文件。

我无法找到一个不会假设小数点的IFormatProvider,但我怀疑这是我需要的。

如果我以字符串格式省略小数,如下所示:

?myvalue
19.76
?((decimal)myvalue).ToString("####000")
"020"

我的值是四舍五入的

2 个答案:

答案 0 :(得分:1)

答案是,如果不将字符串转换为其他格式并删除小数分隔符,则无法执行此操作。

没有删除小数点分隔符的基本格式。然后你可以尝试内置System.Globalization.NumberFormatInfo,但它不接受空分隔符...

decimal d = 19.76m; 
var format = new System.Globalization.NumberFormatInfo() { NumberDecimalSeparator = string.Empty };
// ArgumentException: Decimal separator cannot be the empty string.
d.ToString(format); 

现在剩下的就是自己实现IFormatProvider ...无论如何,这将涉及手动摆弄数字以删除小数点分隔符(转换为字符串并替换,乘以生成整数等)! / p>

答案 1 :(得分:0)

您可以尝试这样的事情:

string output = myValue.ToString().Replace(".", string.Empty);

首先,调用十进制值的ToString方法获取字符串表示形式,然后用空字符串替换字符串的单个.字符。

.NET Fiddle