java - 乘以浮点数后的错误结果
问题描述
我的 java 代码中有奇怪的问题。为什么每个低于 0.4f 的数字乘以 0.0025f 都会给我错误的结果。
正确结果:
0.4f * 0.0025f = 0.001f
错误的结果:
0.399999f * 0.0025f = 9.999975E-4
instead of 0.000999998f
0.33333f * 0.0025f = 8.33325E-4
instead of 0.000833325f
0.11111f * 0.0025f = 2.77775E-4
instead of 0.000277775f
解决方案
你如何打印你的结果。你也许应该看看那个。听起来您不了解指数表示法。
9.999975E-4 == 0.000999975
E-4 只是意味着将小数点向右移动 4 位。
此外,你做错了自己的数学。你有一个以 9 结尾的数字乘以一个以 5 结尾的数字,这意味着答案将以 5 结尾(毕竟 9 x 5 是 45)。所以它不会是 0.000999998。你从一个四舍五入的东西中得到了答案,也许是一个不会完全显示出来的计算器。
你没有数学问题。你有一个显示问题,不是真的。那是你不了解显示器。
也许查找 printf 方法并使用格式字符串,小数点后有很多数据空间。
推荐阅读
- python - 正确使用 python unittest mock 的问题
- python - 如何自动化 - 网站上的勾选框
- html - 垂直旋转文本 -90 度居中对齐,文本长度未知
- android - 无法在 Android 11 中将文件路径传递给 MediaRecorder
- image - 将普通的 Uint8List 转换为图像小部件
- c - 错误:使用 bpf_probe_read_*() 时无效的内存访问“inv”
- c# - 无法将另一个内部的 JArray 转换为对象列表(Automapper - Net Core)
- asp.net - 每个 Web 应用程序中的 Roslyn 文件夹
- python - 难以理解修改后的 VGG16 前向方法 (Pytorch) 的行为
- azure-data-factory - 在 Azure 数据工厂的数据流中获取数据湖元数据