Chinaunix首页 | 论坛 | 博客
  • 博客访问: 192763
  • 博文数量: 33
  • 博客积分: 2020
  • 博客等级: 大尉
  • 技术积分: 380
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-20 14:56
文章分类

全部博文(33)

文章存档

2010年(26)

2009年(7)

我的朋友

分类:

2009-04-07 16:43:18

JL Computer Consultancy
                        数据是如何存储的。
        select dump({number},10) from dual;   -- decimal dump
        select dump({number},16) from dual;   -- hex dump
步骤一 精度部分:
如果内部数字以102(Hex 0X66)结尾
 他是负数
 丢弃最后的数字102
 用101减去从第二个到倒数第二个的数字
else
  他是正数
  从倒数第二个到最后一个数字,全部减一
 
步骤二 scale:
   如果数字是负的
   第一个数字减去62,然后是100的次方,再与别的数字相乘
   如果是正的:
   第一个数字减去193,然后100的次方,再与别的数字相乘
Example 1:
c3 2 2e = 195 2 46
The number is positive (doesn't end in 102 / 0x66)
        (2,46) --> 01 45 --> 1.45
        195 = 193 + 2 --> multiply by 100 twice
        Answer 14,500
Example 2:
be 2e 3d = 190 46 61
The number is positive
        (46, 61) --> 45 60 --> 45.60
        190 = 193 - 3 --> negative so divide by 100 three times
        Answer 0.0000456
Example 3:
40 1c 3d 66 = 64 28 61 102
The number is negative (ends in 102 / 0x66)
        (28, 61) --> 73 40 --> 73.40          (101 - 28 = 73 etc.)
        64 =  62 + 2 --> divide by 100 two times
        Answer -0.00734
Example 4:
3c 5d 8 25 43 66 = 60 93 8 37 67 102
The number is negative
        (93, 8, 37, 67) --> 8 93 64 34  --> 8.936434
        60 = 62 - 2 --> negative so multiple by 100 twice
        Answer -89364.34
 
 
转自
阅读(2067) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~