java - 浮点运算 = 从 Dec 到 Binary 的最差精度/差异是多少?

标签 java math floating-point decimal fractions

众所周知,小数(如 0.1),当存储为 float (如 double 或 float)时,将在内部以“二进制格式”表示(IEEE 754 ).还有一些小数不能直接用二进制表示。

我不明白的是这种“转换”的精度:

1.) float 本身可以有精度(即“重要”)?

2.) 但是从小数到二进制小数的转换也有精度损失?

问题:

从小数转换为 float 时,最坏情况下的精度损失(对于“所有”可能的小数)是多少?

(我想知道这一点的原因是,在将小数部分与二进制/浮点分数进行比较时,我需要考虑精度......以确定两个数字是否相同。我希望这个精度与尽可能紧凑/精确 (十进制小数 == 二进制小数 +/- 精度)

示例(仅假设)

0,1 dec => 0,10000001212121212121212 (binary fraction double) => precision loss 0,00000001212121212121212
0,3 dec => 0,300000282828282 (binary fraction double) => precision loss  0,000000282828282

最佳答案

我不完全清楚你在追求什么,但你可能对以下论文感兴趣,该论文讨论了二进制/十进制转换中涉及的许多准确性问题,包括疑难案例列表。

弗恩·帕克森和威廉·卡汉。 用于测试 IEEE 十进制-二进制转换的程序。 1991 年 5 月 22 日 http://www.icir.org/vern/papers/testbase-report.pdf

关于java - 浮点运算 = 从 Dec 到 Binary 的最差精度/差异是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7169700/

相关文章:

algorithm - 找到第 k 个好数

math - 找到可以从给定节点集形成的不同未标记树的公式是什么?

处理器的代码解释和十进制比较

python - 什么是 float ,我的想法正确吗?

java - 动态获取结果集列和值

java - 无法在 spring 应用程序中更改语言

java - 使用 Vaadin 14 中的 "Upload"小部件将文本文件的内容上传到内存中的字符串

PHP Math 函数返回错误结果

Java:双机ε不是最小的x,使得1 + x!= 1?

java - 在 OpenCV for Java 中应用掩码过滤 Mat 对象