关于浮点和整型数的运算(100分)

  • 主题发起人 主题发起人 ghg_qh
  • 开始时间 开始时间
G

ghg_qh

Unregistered / Unconfirmed
GUEST, unregistred user!
如何把integer类型转换为float
 
single(aInt) ordo
uble(aInt)
 
直接赋值或参加运算, 不需要专门转换吧
do
UBLE:=integer 赋值兼容;
 
如下程序
var
x: integer;
b : real;
c : single;
begin
x := 100;
b := single(x);
c := single(x);
{double can not be compiled I use d2}
end;
执行完后
x为100
b为-1.0512447958e-34
c为1.7004655971e-38
是否程序有问题?
 
agree with 张国龙
 
说明一下
typecast 只是对内存中的二进制值进行解释
并不在乎他以前代表什么意思. 这根转换前后
的变量的长度和存储格式有关.
 
转换直接用
b:=x;c:=x;
值应该没问题。
 
张国龙你能告诉我delphi中float的具体存储格式吗?先把分给你加上,
 
你学过计算机组织原理吗? 如果学过, 一看就会明白:
一个浮点数有3部分组程: 符号位, 尾数, 指数;
delphi中并无float型, 它的浮点数是real想
包括real48, single,double, currency, comp ,格式如下

single:32bit;
bit:0 8 16 24 31
0 0000000 0 0000000 00000000 00000000
^~~~~~~~~~
| | 尾数v
| 指数e
符号位s
The value v of the number is given by
if 0 < e < 255, then
v = (?)^s * 2^(e?27) * (1.f )
if e = 0 and f <> 0, then
v = (?)^s * 2^(?26) * (0.f )
if e = 0 and f = 0, then
v = (?)^s * 0
if e = 255 and f = 0, then
v = (?)^s * Inf
if e = 255 and f <> 0, then
v is a NaN
参看: delphi help/ object pascal reference / memory management /real type
delphi 中real 默认为do
uble .
 
后退
顶部