英文:
Java are de-normalized numbers guarantied?
问题
Java标准对浮点数的确切行为有何规定吗?
是否有保证它会使用非规格化数?有常量Float.MIN_VALUE
和Float.MIN_NORMAL
,但当硬件不处理非规格化数时会发生什么情况?
在更具体的情况下,我是否有保证在x86/64系统上,每个Java实现都不会禁用非规格化值?
我可以禁用这种行为并将所有非规格化数视为零吗?
英文:
Does the Java Standard impose anything about the exact behavior of floating points?
Is there any guaranty that it will use de-normalized numbers? There are the constants Float.MIN_VALUE
and Float.MIN_NORMAL
, but what happens when the hardware does not handle de-normalized numbers?
In a more concrete case, am I guarantied that on a x86/64 system that every java implementation does not disable de-normalized values?
Can I disable this behavior and consider all de-normalized numbers as zero?
答案1
得分: 3
Java语言规范第4.2.4节 要求 支持非规格化数字:
> 具体而言,Java编程语言要求支持IEEE 754 非规格化 浮点数和渐进下溢,这使得更容易证明特定数值算法的理想特性。如果计算结果是非规格化数字,浮点操作不会“刷成零”。
如果硬件不处理非规格化数字,必须在JVM中进行软件补丁以使其符合规范。
英文:
The Java Language Specification section 4.2.4 requires support for denormalized numbers:
> In particular, the Java programming language requires support of IEEE 754 denormalized floating-point numbers and gradual underflow, which make it easier to prove desirable properties of particular numerical algorithms. Floating-point operations do not "flush to zero" if the calculated result is a denormalized number.
If the hardware does not handle de-normalized numbers, this has to patched in software in the JVM for it to be compliant with the specification.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论