c# - 为什么在 c# 中将 double 转换为 float 时我的精度会丢失?
问题描述
我在 c# 中有双值作为10293.01416015625并且我正在尝试转换为浮点数。由于 float 只有 24 位,我想得到的结果为10293.0141。但我得到的价值是10293.0137
double value = 10293.01416015625;
float converted = (float)value;
预期值- 10293.0141
正在获得的价值- 10293.0137
提前致谢
解决方案
单个值具有最多 7 位十进制数字的精度,尽管内部维护最多 9 位数字。
您的结果最多为 7 位有效数字 (10293.01)。你不应该期望能够得到更多float
。
float
最接近 10293.01416015625的 s 的准确值为10293.013671875 和 10293.0146484375。两者都与您尝试表示的值相差 0.00048828125。
推荐阅读
- angular - 导入时在“@angular/http”处显示错误
- python - 如何获取语料库中单词的平均 TF-IDF 值?
- c# - 如何在多个线程上对收到的 udp 数据包进行负载平衡?
- sql-server - 如何加入表
- mysql - 如何在多对多关系mysql中显示记录?
- algorithm - 在解决约束问题时,有没有比完全排列更好的 Multiple 算法?
- ios - Cordova 提交到应用商店时出现“Apple 将停止接受使用 UIWebView 的应用提交”警告
- php - 如何使用 maatexcel 库为导出到 excel 文件的每一列制作边框?
- java - Elasticsearch 更新文档而不创建新索引
- angular - 想了解@ViewChild() 的工作原理