加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – decimal.ToString的不同行为

发布时间:2020-12-15 23:34:42 所属栏目:百科 来源:网络整理
导读:我遇到了一个非常奇怪的decimal.ToString行为: 第一个案例: 你可以看到变量ValueFloat = 9和ValueFloat.Value.ToString(“G”)=“9”. 第二种情况: 您可以看到变量ValueFloat = 9和ValueFloat.Value.ToString(“G”)=“9.000000000000000”. 现在,怎么可
我遇到了一个非常奇怪的decimal.ToString行为:
第一个案例:

enter image description here

你可以看到变量ValueFloat = 9和ValueFloat.Value.ToString(“G”)=“9”.

第二种情况:

enter image description here

您可以看到变量ValueFloat = 9和ValueFloat.Value.ToString(“G”)=“9.000000000000000”.

现在,怎么可能呢?变量ValueFloat在两种情况下都具有相同的值.

我假设它可能与文化有关,但在这两种情况下代码都在我的本地机器上运行,这显然具有相同的文化.

解决方法

如果该值是在点之后涉及有效数字的算术运算的结果,则可能发生这种情况.这是一个例子:

decimal a = 9;
decimal b = 1.23456789M;
decimal c = 10.23456789M;
decimal d = c-b; // The result is 9
Console.WriteLine("Values are the same: {0}",a == d);
Console.WriteLine(a.ToString("G"));
Console.WriteLine(d.ToString("G"));

运行上面的produces输出如下:

Values are the same: True
9
9.00000000

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读