oracle数字类型num比较大小,关于类型:Oracle NUMBER比较

oracle数字类型num比较大小,关于类型:Oracle NUMBER比较通常,在编程中,不应比较浮点数据类型的相等性,因为存储的值通常是近似值。由于两个非整数的OracleNUMBER值存储方式不同(基数为10),是否可以可靠地比较它们的相等性?是的,OracleNUMBER类型是精确的。与浮点/双精度类型相比,它们更像是带刻度的整数。因此NUMBER(10,3)具有10位数字,在小数点后3位,这实际上是10位整数,小数位数为3。实际上,这就是JavaBig…

大家好,又见面了,我是你们的朋友全栈君。

通常,在编程中,不应比较浮点数据类型的相等性,因为存储的值通常是近似值。

由于两个非整数的Oracle NUMBER值存储方式不同(基数为10),是否可以可靠地比较它们的相等性?

是的,Oracle NUMBER类型是精确的。 与浮点/双精度类型相比,它们更像是带刻度的整数。 因此NUMBER(10,3)具有10位数字,在小数点后3位,这实际上是10位整数,小数位数为3。实际上,这就是Java BigDecimals的工作方式的精确之处(内部是BigInteger加上小数位数)。

有任何可用的文档吗?

download.oracle.com/docs/cd/B19306_01/server.102/b14220/

不,它们不精确。

如果两个NUMBER类型包含一个数字(例如10.32)并且您将它们进行比较,则它们将相等,并且无论如何获取10.32都无关紧要。 这与浮点数不同。 在NUMBER类型中为0.1 + 0.1 + 0.1 + 0.1 + 0.1 = 0.5,但在浮点数学中则不需要。 这就是我所说的精确值(假设NUMBER类型的小数位数至少为1)。

Quassnoi,请详细说明。

Oracle NUMBER类型存储为一组百位数(即base 100,而不是base 10),每个字节一位。

第一个字节代表指数,其他字节代表尾数。

这意味着对于非常大的数字,甚至整数也可以取整:

SELECT  10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 –

10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

FROM    dual

0

Oracle可以保证NUMBER中的38位精度,尽管可以表示40位。 有关参考,请参见Oracle Concepts。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163910.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号