4舍5入问题,请各位大哥看看,谁解决,分全给他 ______12小时内在线等 (200分)

  • 主题发起人 主题发起人 celeronIII
  • 开始时间 开始时间
C

celeronIII

Unregistered / Unconfirmed
GUEST, unregistred user!
http://www.jnnj110.gov.cn/jingning/uploadImages/20036710151874172.rar

只有一个数字4舍五入出错,不知为什么??
数字是0.8765 * 0.9,用变量代替
 
sorry,编译出错,请各位把unit1中的use dbgrideh删除即可
 
要保留几位?
 
试试看在编译选项中勾上Pentium-Safe FDIV
 
我是保留四位,仅仅是程序里面的哪个数字出错,其它的好像都对
 
问题是不是出在开方上了。它FormatFlaot('#,##0.0000',Float)也有四舍五入功能。
对于整数开方用intpower。
 
caili314,Pentium-Safe FDIV 在哪里?
 
问题不应该出在开方上,假如我不用变量代替,直接用数字计算,出来的结果是对的
 
Pentium-Safe FDIV 我已经找到,试了,结果一样出错
 
兄弟,这好像是上个帖子的问题,还没有解决啊??
 
jrq,是没解决,但我不能老不发分
 
就不会成为一个世纪问题吧,怎么都没人看了?????高手都跑哪去了?
 
单步执行一下,看看那句出错。
 
试过了,没哪句出错
 
我试过了,是Uses语句中多了个Variants的引用出错,将QxCheck及unit1单元的Uses中的Variants删除,编译结果就是正确的。原出错原因是Double及Byte类型定义时,不需引用Variants单元。如下:
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, math; //Variants,
即可
 
换成这个:
result:=0;
radix:=4;
if aValue>0 then
result:=round(aValue*power(10,radix)+0.00000001)/power(10,radix);
 
[:D][blue][/blue]我刚来给你一个四舍伍入的例子不知对你有没有用
function 4out5in(x:real; i:integer) : real;
var
fact : integer;
begin
fact:=1;
while( i>0 ) do begin
fact:=fact*10;
i:=i-1;
end;
4out5in := round(x*fact)/fact;
end;
 
看看这里:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1049035
 
lightstar,一样的结果
 
沒有問題阿,編譯時需去掉variants
delphi5+window2000繁體環境
 
后退
顶部