繁体   English   中英

String.Format异常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM