[英]String.Format anomaly
我可能是一个非常大的白痴因为没有看到非常明显的东西,但我不知道我现在能检查什么。
问题是这个。 如果我有这个代码
decimal d = 45550M;
string s = string.Format("{0}", d);
结果有时是"45550,00"
而不是"45550"
。 我不知道是什么原因造成的。
我能检查什么? 什么可以导致String.Format不总是表现相同?
十进制值具有特定的缩放因子。 根据您对十进制值执行的操作,缩放系数可能会更改。
十进制数是一个浮点值,由一个符号,一个数值组成,其中值中的每个数字范围从0到9,以及一个缩放系数,表示浮动小数点的位置,用于分隔积分和小数部分的数值。
除非指定小数位数,否则小数位数默认与小数值的缩放系数相匹配。
缩放因子还保留十进制数中的任何尾随零。 尾随零不影响算术或比较运算中的十进制数的值。 但是,如果应用了适当的格式字符串,则ToString方法可以显示尾随零 。
例:
var x = 100m;
var y = x * 1.00m;
string s1 = string.Format("{0}", x); // "100"
string s2 = string.Format("{0}", y); // "100.00"
结果因机器而异,因为您没有指定用于格式化的显式文化,因此运行时将使用当前线程文化,这将是机器上配置的线程文化。
string.Format("{0:0}", d);
应始终输出0位小数(“45550”)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.