- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个充满 10 位整数的表,并想通过将它们存储为 BINARY_FLOAT 来加速 Oracle 中的查询/数学运算。这比 NUMBER 对 CPU 更友好,并且不会占用太多空间(我认为),这意味着内存中的数据更多。
但是,BINARY_FLOAT 似乎为两个不同的数字生成相同的字节(因此值)......这显然不起作用。
示例:
SQL> select dump(to_binary_float(25185387)) from dual;
DUMP(TO_BINARY_FLOAT(2518538
----------------------------
Typ=100 Len=4: 203,192,38,54
SQL> select dump(to_binary_float(25185388)) from dual;
DUMP(TO_BINARY_FLOAT(2518538
----------------------------
Typ=100 Len=4: 203,192,38,54
SQL> CREATE TABLE blah ( somenum BINARY_FLOAT );
Table created.
SQL> insert into blah (somenum) values (25185387);
1 row created.
SQL> insert into blah (somenum) values (25185388);
1 row created.
SQL> select somenum from blah;
SOMENUM
----------
2.519E+007
2.519E+007
SQL> select to_number(somenum) from blah;
TO_NUMBER(SOMENUM)
------------------
25185388
25185388
SQL> select dump(somenum) from blah;
DUMP(SOMENUM)
------------------------------------------------------------------------------------------------------------------------
Typ=100 Len=4: 203,192,38,54
Typ=100 Len=4: 203,192,38,54
我预计如果我进入浮点,我可能会遇到一些问题,但这些是整数。我尝试过各种咒语 - 25185387f、25185387.0、25185387*1.0、to_number(25185387) 等。
当我阅读文档时,BINARY_FLOAT 应存储为 1.79e308,因此它不可能是舍入问题。
我在 64 位平台上使用 Oracle 11.2.0.3。
想法?谢谢。
最佳答案
由于oracle的实现是BINARY_FLOAT标准ieee 754。BINARY_FLOAT与singe相同.
single 只有 23 位有效位。
25185387 = 11000000001001100011010 11(长度 = 25)
25185388 = 11000000001001100011011 00(长度 = 25)
因此这些预言轮的重要性,丢弃最低有效位
25185387 ~ 11000000001001100011011 * 2^2
25185388 ~ 11000000001001100011011 * 2^2
所以得到相同的值
关于Oracle BINARY_FLOAT : 2 integers give same value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9324470/
Oracle 文档 (http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions088.htm#i77996) 说“MOD 返回 n
我有一个充满 10 位整数的表,并想通过将它们存储为 BINARY_FLOAT 来加速 Oracle 中的查询/数学运算。这比 NUMBER 对 CPU 更友好,并且不会占用太多空间(我认为),这意味
我是一名优秀的程序员,十分优秀!