查看delphi帮助得到如下范围
Double 5.0 x 10^-324 .. 1.7 x 10^308
但是我给Double型变量赋值 -1, 也是可以的, 为什么没越界呢?
Double 5.0 x 10^-324 .. 1.7 x 10^308
但是我给Double型变量赋值 -1, 也是可以的, 为什么没越界呢?
解决方案 »
- 窗口标题栏高难度编程,放分
- 如何设置打印机成脱机状态?--------菜鸟的问题
- 将dbgrid中的数据导入到excel中后,数据不能进行累加,显示是文本类型,不是数字类型。
- oracle服务器上的e:\abc\文件夹中有*.doc,怎么能在客户端读取这些WORD文档到客户端
- ★★动态创建窗体的奇怪问题,看谁能解决?在线等!
- vcwfs.dll 函数的引用
- 谁有去短信公司拿短信内容的源码?
- ★★★如何添加listview的每一行的OnClick事件,请帮忙★★★
- 请教Oracle的TimeStamp型
- 如何给adoquery的参数对象加一个属性?要求不动Delphi的源代码
- 心情不好,问个无聊的问题!
- VS2005的Dock很弱智,还是Borland的IDE好用
10^-324 .. 1.7 x 10^308 指的是最大精度
这个讲有效位数, 15-16, 只有 15-16 个数字有效, 12345678901234567890 就超界(20有效位), 1.12345678901234567890 就会被截断成 1.1234567890123456(截断成 16 有效位)
但是,很显然
楼上根本没看懂楼主说什么1.1234567890123456是最小的取值范围么?
如果是,为什么还能赋值-1?
=======================
难道LZ是在问最大精度么? 况且 哈哈哈 哈哈
楼上都两星了还分不清什么是取值范围什么是精度?
1.7 x 10^308是精度? 哈哈
Single Precision 1 [31] 8 [30-23] 23 [22-00] 127
Double Precision 1 [63] 11 [62-52] 52 [51-00] 1023double 是 11 有效精度 2^11 = 1024
52 有效位 2^52 = 4503599627370496(换句话说, 去掉小数点, 最大不能超过这个数才能表示)
5.0 x 10^-324 .. 1.7 x 10^308 是 "range" 即取值范围
而不是Precision “精度”
你说 1.7 x 10^308 指的是最大精度显然是不对的
请原谅我咬文嚼字 囧
Real48 2.9 x 10^-39 .. 1.7 x 10^38 11-12 6
Single 1.5 x 10^-45 .. 3.4 x 10^38 7-8 4
Double 5.0 x 10^-324 .. 1.7 x 10^308 15-16 8
Extended 3.6 x 10^-4951 .. 1.1 x 10^4932 19-20 10
Comp -2^63+1 .. 2^63 -1 19-20 8
Currency -922337203685477.5808.. 922337203685477.5807 19-20 8Delphi7的help文档里说的
是range就不是precision
在下表里 为什么是Range而不是Precision呢?
为什么Comp类型带有符号而Double类型不带符号呢?
Type Range Significant digits Size in bytes
Real48 2.9 x 10^-39 .. 1.7 x 10^38 11-12 6
Single 1.5 x 10^-45 .. 3.4 x 10^38 7-8 4
Double 5.0 x 10^-324 .. 1.7 x 10^308 15-16 8
Extended 3.6 x 10^-4951 .. 1.1 x 10^4932 19-20 10
Comp -2^63+1 .. 2^63 -1 19-20 8
Currency -922337203685477.5808.. 922337203685477.5807 19-20 8
用补码的正负范围是不同的, 是非专用的符号位
byte -128 ~ 127
word -32768 ~ 32767delphi 帮助那样表示不够明确
double, single 和 extended 用的不是补码
呵呵,不好意思,错怪了
感谢comanche(太可怕) 耐心解释,
感谢yuxuanji(# I'm 马克) 参与讨论.