C# 没有小数点的固定小数位数

C# 没有小数点的固定小数位数,c#,string-formatting,C#,String Formatting,我试图屏蔽一个十进制值 我想把19.76转换成1976000,甚至1976 另一个例子是500.53将变成50053000 我希望使用ToString重载而不是某种转换方法来实现这一点,因为它更适合我的xml设置文件 我找不到一个不带小数点的IFormatProvider,但我怀疑这正是我需要的 如果我在字符串格式中省略小数点,如下所示: ?myvalue 19.76 ?((decimal)myvalue).ToString("####000") "020" string output = m

我试图屏蔽一个十进制值

我想把
19.76
转换成
1976000
,甚至
1976

另一个例子是
500.53
将变成
50053000

我希望使用
ToString
重载而不是某种转换方法来实现这一点,因为它更适合我的xml设置文件

我找不到一个不带小数点的
IFormatProvider
,但我怀疑这正是我需要的

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

?myvalue
19.76
?((decimal)myvalue).ToString("####000")
"020"
string output = myValue.ToString().Replace(".", string.Empty);

我的值是四舍五入的

您可以尝试以下方法:

?myvalue
19.76
?((decimal)myvalue).ToString("####000")
"020"
string output = myValue.ToString().Replace(".", string.Empty);
首先调用十进制值的
ToString
方法以获取其字符串表示形式,然后用空字符串替换字符串的单个
字符


答案是,如果不将字符串转换为另一种格式并删除十进制分隔符,则无法执行此操作

没有删除小数分隔符的基本格式。然后您可以尝试内置的
系统.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
。。。这将涉及手动摆弄数字以删除十进制分隔符(转换为字符串并替换,乘法生成整数,等等)

你说的“掩蔽”到底是什么意思?你的一个例子不足以让我理解你的意图。@merlin2011我所说的掩码就是字符串格式。面具这个词可能太老了。基本上,我只想得到一个十进制值
(比如500.63)
删除十进制,然后使用
ToString
重载添加3个零,得到
50063000
,我想乘以
10^5
并不能解决问题?可能,我希望有一种字符串格式可以实现这一点。哇!!从来都不知道
.NET
还有小提琴礼物。@Rahul是的,它非常棒。我学到的第一种小提琴是SQL小提琴——我是在SO中学会的:)。然后我搜索了一下
.NET
中是否有类似的东西,我找到了。@patrickhoffman是的,我知道。这也太棒了。谢谢你的评论。好吧,这是我害怕的答案。我会做一些重新编译来绕过这个愚蠢的十进制格式。您关于数字格式信息的信息非常好+1.