首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >String.Format异常

String.Format异常
EN

Stack Overflow用户
提问于 2012-11-12 21:07:54
回答 3查看 135关注 0票数 2

我可能是一个大笨蛋,因为我没有看到非常明显的东西,但我不知道我现在可以检查什么。

问题是这样的。如果我有这个代码

代码语言:javascript
复制
decimal d = 45550M;
string s = string.Format("{0}", d);

结果有时是"45550,00"而不是"45550"。我不知道这是什么原因。

我可以检查什么?是什么导致String.Format的行为并不总是相同的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-12 21:30:15

decimal value有一定的比例因子。根据您对小数值执行的操作,缩放因子可能会发生变化。

小数是一个浮点值,由一个符号、一个数值(其中值中的每个数字的范围从0到9 )和一个比例因子组成,该比例因子指示分隔数值的整数部分和小数部分的浮点小数点的位置。

除非指定了小数位数,否则小数位数将默认与小数值的比例因子相匹配。

缩放因子还会保留十进制数中的所有尾随零。在算术或比较运算中,尾随零不影响Decimal数字的值。但是,如果应用了适当的格式字符串,则尾随零可以通过ToString方法显示为

示例:

代码语言:javascript
复制
var x = 100m;
var y = x * 1.00m;

string s1 = string.Format("{0}", x); // "100"
string s2 = string.Format("{0}", y); // "100.00"
票数 5
EN

Stack Overflow用户

发布于 2012-11-12 21:09:55

结果将因计算机而异,因为您没有指定用于格式化的显式区域性,因此运行库将使用当前线程区域性,这实际上是计算机上配置的区域性。

票数 3
EN

Stack Overflow用户

发布于 2012-11-12 21:10:10

string.Format("{0:0}", d);应始终输出0个小数("45550")

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13344276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档