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.