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

c# – 使用ToString(“F1”)时float的值不正确

发布时间:2020-12-15 18:02:08 所属栏目:百科 来源:网络整理
导读:我有一个浮点值:12345.6489 当我使用以下格式化时: (12345.6489f)的ToString( “F1”) 然后我得到一个结果 12345.7 但这是不正确的,因为它应该是12345.6. 有人明白为什么会发生这种情况吗?另一个提示是,在格式化之前,转换加倍返回正确的结果,如果我的浮点
我有一个浮点值:12345.6489

当我使用以下格式化时:

(12345.6489f)的ToString( “F1”)

然后我得到一个结果

12345.7

但这是不正确的,因为它应该是12345.6.

有人明白为什么会发生这种情况吗?另一个提示是,在格式化之前,转换加倍返回正确的结果,如果我的浮点值稍小一些,例如1234.6489,那么我也得到正确的结果.

解决方法

这似乎与前一段时间提到的一个问题有关: Round-twice error in .NET’s Double.ToString method

请注意,如果您在号码上调用.ToString(“G”),则将其正确舍入为12345.65.如果将舍入的数字舍入为十进制数,则会出现问题.

当我早些时候调查了我自己的问题时,我还发现一些不能被解释为二次错误的例子,所以检查这个线程.

附加:请注意,浮点数可以表示(完全)的任何数字也可以用双倍表示(大量零位).人们可以使用以下技巧(这个问题也提到):

float x = 12345.6489f;
string trick = ((double)x).ToString("F1");

(编辑:李大同)

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

    推荐文章
      热点阅读