为什么只能显示四位小数呢?该如何解决
为什么只能显示四位小数呢?
delphi里怎么只显示4位小数啊?
代码如下
procedure TForm1.Button1Click(Sender: TObject);
var
m:variant;
begin
m:=1.162179;
edit1.text:=m;
end;
end.
结果edit1只显示了1.1622阿,后面的被四舍五入了
我把edit1.text:=m换成了edit1.text:=floattostr(m);也是一样啊
谁知道怎么让他显示完全
我是新手
谢谢
------解决方案--------------------
用Real试试
------解决方案--------------------
这是个传值中丢失精度的问题,,
procedure TForm1.Button1Click(Sender: TObject);
var
m:variant;
begin
m:=floattostr(1.162179);
edit1.text:=m;
end;
end.
这样就没问题了,,,
当然hongqi162(失踪的月亮的方法也是可行的....
------解决方案--------------------
总结下,LS都可用。
------解决方案--------------------
M数据类型问题!楼上的都说了!
------解决方案--------------------
为什么会是四位, 楼上几位都没有回答.
这个问题比较经典, 在不同的delphi版本显示都有不同, 主要是牵涉到数据类别转换的优先级别.
在BDS2006中是可以正确的显示 1.162179, 从汇编码中就知道后台的转换
Unit1.pas.31: M := 1.162179;
00454BC7 DB2D184C4500 fld tbyte ptr [$00454c18]
00454BCD 8D45F0 lea eax,[ebp-$10]
00454BD0 E89FB7FBFF call @VarFromReal //这里知道是VarToReal的转换
在Delphi7中显示是 1.1622, 从汇编码中就知道后台的转换
Unit1.pas.31: M := 1.162179;
00454BC7 DB2D184C4500 fld tbyte ptr [$00454c18]
00454BCD 8D45F0 lea eax,[ebp-$10]
00454BD0 E89FB7FBFF call @VarFromCurr //这里知道是VarToCurr的转换, 而Currency只有四位的精度的
通过上面的对比可以知道, BDS2006与Delphi7的数据转换优先级别是一样, 看来BDS2006的数据转换与MS相同或是接近. MS SQL2000数据转换优先级别如下:
下面是 Microsoft® SQL Server™ 2000 数据类型的优先顺序:
sql_variant(最高)
datetime
smalldatetime
float
real
decimal
money (这里转换到delphi是就是Currency)
smallmoney
bigint
int
smallint
tinyint
bit
ntext
text
image
timestamp
uniqueidentifier
nvarchar
nchar
varchar
char
varbinary
binary(最低)
------解决方案--------------------
学到
------解决方案--------------------
有事没事定义数据类型还用variant.
delphi里怎么只显示4位小数啊?
代码如下
procedure TForm1.Button1Click(Sender: TObject);
var
m:variant;
begin
m:=1.162179;
edit1.text:=m;
end;
end.
结果edit1只显示了1.1622阿,后面的被四舍五入了
我把edit1.text:=m换成了edit1.text:=floattostr(m);也是一样啊
谁知道怎么让他显示完全
我是新手
谢谢
------解决方案--------------------
用Real试试
------解决方案--------------------
这是个传值中丢失精度的问题,,
procedure TForm1.Button1Click(Sender: TObject);
var
m:variant;
begin
m:=floattostr(1.162179);
edit1.text:=m;
end;
end.
这样就没问题了,,,
当然hongqi162(失踪的月亮的方法也是可行的....
------解决方案--------------------
总结下,LS都可用。
------解决方案--------------------
M数据类型问题!楼上的都说了!
------解决方案--------------------
为什么会是四位, 楼上几位都没有回答.
这个问题比较经典, 在不同的delphi版本显示都有不同, 主要是牵涉到数据类别转换的优先级别.
在BDS2006中是可以正确的显示 1.162179, 从汇编码中就知道后台的转换
Unit1.pas.31: M := 1.162179;
00454BC7 DB2D184C4500 fld tbyte ptr [$00454c18]
00454BCD 8D45F0 lea eax,[ebp-$10]
00454BD0 E89FB7FBFF call @VarFromReal //这里知道是VarToReal的转换
在Delphi7中显示是 1.1622, 从汇编码中就知道后台的转换
Unit1.pas.31: M := 1.162179;
00454BC7 DB2D184C4500 fld tbyte ptr [$00454c18]
00454BCD 8D45F0 lea eax,[ebp-$10]
00454BD0 E89FB7FBFF call @VarFromCurr //这里知道是VarToCurr的转换, 而Currency只有四位的精度的
通过上面的对比可以知道, BDS2006与Delphi7的数据转换优先级别是一样, 看来BDS2006的数据转换与MS相同或是接近. MS SQL2000数据转换优先级别如下:
下面是 Microsoft® SQL Server™ 2000 数据类型的优先顺序:
sql_variant(最高)
datetime
smalldatetime
float
real
decimal
money (这里转换到delphi是就是Currency)
smallmoney
bigint
int
smallint
tinyint
bit
ntext
text
image
timestamp
uniqueidentifier
nvarchar
nchar
varchar
char
varbinary
binary(最低)
------解决方案--------------------
学到
------解决方案--------------------
有事没事定义数据类型还用variant.