c# - C# 为什么 string.format 将浮点值舍入到最接近的第 10 位?
问题描述
格式化后的数字四舍五入到最接近的第 10 个值
var testVal = Convert.ToSingle("10963798");
var formattedVal = string.Format("{0:n0}", testVal);
产量: 10,963,800
我怎样才能避免这个回合?
解决方案
ToSingle
返回一个单精度float
,它没有那种精度(通常只有 7 个十进制数字)。因此,Format
假设最后一位数字不精确,并将其四舍五入为 0。
改为使用ToDouble
,它返回一个double
.
或者,因为您没有使用任何小数部分,所以只需使用ToInt32
.
推荐阅读
- sql - 列出 postgresql 数据库中所有表的表大小
- c# - 如何根据一些布尔表达式更改引导列?
- delphi - Socket Error #10054 Connection reset by peer
- java - 无法从 Android 存储中获取所有视频文件
- php - 使用类方法输出数组
- javascript - 如何比较两个不同的时间?
- amazon-web-services - 为所有本地用户设置 AWS Powershell 的默认初始化
- android-source - 向 AOSP 添加和外部平台库
- javascript - “未捕获(承诺中)TypeError:_this.setState 不是函数”错误
- c# - 使用 MailMessage 发送电子邮件将引发以下错误“邮箱不可用”+“处理错误。服务器响应”