S SeaSky Unregistered / Unconfirmed GUEST, unregistred user! 1999-03-30 #2 有以下可能, 你数据是计算出来的, 有可能浮点运算有误差, 你可以使用ASCurrency属性进行取值, 你会得到2.70的.
李 李璋琦 Unregistered / Unconfirmed GUEST, unregistred user! 1999-03-30 #3 float是浮点数,计算机保存浮单数并不象我们直接看到的那样,浮点数的表示方法你自己找书看吧。这个问题可能是由于精度取舍时出现的。 解决办法是使用floattodecimal函数或displayformat函数具体看你在那里用了 精度要求不高时可以取舍
float是浮点数,计算机保存浮单数并不象我们直接看到的那样,浮点数的表示方法你自己找书看吧。这个问题可能是由于精度取舍时出现的。 解决办法是使用floattodecimal函数或displayformat函数具体看你在那里用了 精度要求不高时可以取舍
呆 呆非4 Unregistered / Unconfirmed GUEST, unregistred user! 1999-03-31 #6 是这样的: 表里有一字段是FLOAT(不是 Currency),我想对这字段进行加减等 运算,比如表中的数据为2。70,用户输入2。70,然后我想对它们 进行相减,但结果不是0,而是0。0000009856这样的值。真是气人。
是这样的: 表里有一字段是FLOAT(不是 Currency),我想对这字段进行加减等 运算,比如表中的数据为2。70,用户输入2。70,然后我想对它们 进行相减,但结果不是0,而是0。0000009856这样的值。真是气人。
呆 呆非4 Unregistered / Unconfirmed GUEST, unregistred user! 1999-03-31 #7 是这样的: 表里有一字段是FLOAT(不是 Currency),我想对这字段进行加减等 运算,比如表中的数据为2。70,用户输入2。70,然后我想对它们 进行相减,但结果不是0,而是0。0000009856这样的值。真是气人。
是这样的: 表里有一字段是FLOAT(不是 Currency),我想对这字段进行加减等 运算,比如表中的数据为2。70,用户输入2。70,然后我想对它们 进行相减,但结果不是0,而是0。0000009856这样的值。真是气人。
S sherman Unregistered / Unconfirmed GUEST, unregistred user! 1999-03-31 #8 浮点数使用科学记数法保存,当然有误差了,ROUND一下就可以了。
心 心心 Unregistered / Unconfirmed GUEST, unregistred user! 1999-03-31 #9 我的解决办法是自定义一个函数,如下 Function strtoDouble(str : String) : Double; Var i : Double; code : integer; Begin val(str, i, code); result := i; End; 我的程序中就用了这个函数。 你的是用在数据库中,我想改写一下也许可用。
我的解决办法是自定义一个函数,如下 Function strtoDouble(str : String) : Double; Var i : Double; code : integer; Begin val(str, i, code); result := i; End; 我的程序中就用了这个函数。 你的是用在数据库中,我想改写一下也许可用。
呆 呆非4 Unregistered / Unconfirmed GUEST, unregistred user! 1999-04-02 #10 我的主要目的是让数据库不出现271。1200007876而只有271。12这样,只 精确到小数点两位或三位的数据。
呆 呆非4 Unregistered / Unconfirmed GUEST, unregistred user! 1999-04-02 #11 DisplayFormat,EditFormat方法只是格式化显示,数据库中的 实际值仍是2。69999999985之类的值。
J jghuang Unregistered / Unconfirmed GUEST, unregistred user! 1999-04-02 #12 >数据库中的实际值仍是2。69999999985之类的值。 好像不太可能,即使再精确,2.7也是2.70000000000..., 因为每个float的小数部分是由N个2E-n累加起来的, 另外float本身定义就有那么多位,你总得把4个字节的0,1填满把.
>数据库中的实际值仍是2。69999999985之类的值。 好像不太可能,即使再精确,2.7也是2.70000000000..., 因为每个float的小数部分是由N个2E-n累加起来的, 另外float本身定义就有那么多位,你总得把4个字节的0,1填满把.
心 心心 Unregistered / Unconfirmed GUEST, unregistred user! 1999-04-03 #13 再用Str转换一次不可以吗,我不太好用数据库。 下面的D4中关于Str的例子。不知能行否?上交说的因我的数据是自定义格式,故无问题。 function MakeItAString(I: Longint): string; { Convert any integer type to a string } var S: string[11]; begin Str(I, S); Result:= S; end; begin Canvas.TextOut(10, 10, MakeItAString(-5322)); end;
再用Str转换一次不可以吗,我不太好用数据库。 下面的D4中关于Str的例子。不知能行否?上交说的因我的数据是自定义格式,故无问题。 function MakeItAString(I: Longint): string; { Convert any integer type to a string } var S: string[11]; begin Str(I, S); Result:= S; end; begin Canvas.TextOut(10, 10, MakeItAString(-5322)); end;
J Jimchael Tsee Unregistered / Unconfirmed GUEST, unregistred user! 1999-04-03 #14 我不知你用的是不是MS SQL Server. 如果是, 你应该在字段类型中使用 numeric(10, 2), 而不是浮点数. 如果是其他的数据库, 有不同的定义方法, 不知可否告诉我你用的是什么数据库? 比如Paradox中你应该在Database Desktop中设置字段的Picture为 *#.##
我不知你用的是不是MS SQL Server. 如果是, 你应该在字段类型中使用 numeric(10, 2), 而不是浮点数. 如果是其他的数据库, 有不同的定义方法, 不知可否告诉我你用的是什么数据库? 比如Paradox中你应该在Database Desktop中设置字段的Picture为 *#.##
呆 呆非4 Unregistered / Unconfirmed GUEST, unregistred user! 1999-04-03 #15 我用的是Paradox。 表结构:有两 个域: S3 N * PRICE N 程序是这样的: float ff; ff =StrToFloat(Edit1->Text); //** Edit11->Text ="1.10" Table1->FieldByName("S3")->AsFloat = Table1->FieldByName("S3)->AsFloat - ff; //*** S3的原值是3.80 //**计算后的值是2.69999999756 我最终的目的是让库的值是2。70 如果不用中间变量却可以, 如:。。。AsFloat = ...AsFloat - StrToFloat(Edit1->Text); 但我程序中还有其他的计算,必须有中间变量。 TO Jimchael:设置Picture ,仅在DESKTOP中会检查,使用上面的程序时, 库中值还是2。69999999756。 TO 心心:我程序中计算的地方很多,如你的转换很烦。
我用的是Paradox。 表结构:有两 个域: S3 N * PRICE N 程序是这样的: float ff; ff =StrToFloat(Edit1->Text); //** Edit11->Text ="1.10" Table1->FieldByName("S3")->AsFloat = Table1->FieldByName("S3)->AsFloat - ff; //*** S3的原值是3.80 //**计算后的值是2.69999999756 我最终的目的是让库的值是2。70 如果不用中间变量却可以, 如:。。。AsFloat = ...AsFloat - StrToFloat(Edit1->Text); 但我程序中还有其他的计算,必须有中间变量。 TO Jimchael:设置Picture ,仅在DESKTOP中会检查,使用上面的程序时, 库中值还是2。69999999756。 TO 心心:我程序中计算的地方很多,如你的转换很烦。