Ucinanie liczb do ktoregos miejsca po przecinku

0

Mam problem bo musze zaokraglic liczbe typu single bo jest za dluga i program wywala mi pozniej przy mnozeniu NAN (NORMAL X = 0,456120014190674|| y = 0|| Z = 0,889909982681274 <= takie liczby)

probowalem zrobic tak round(liczba*100)/100 i nic dale j tyle samo cyfr po przecinku i lekko zmieniona liczba

problowalem jescze przeknowerowac to tak:

s := floattostr(arg);
delete(s,8,100);
if s = '0' then else
s := s+'000';
//do tad jest wszystko dobrze s jest uciete tak jak ma
result := strtofloat(s); //no i zwraca mi taka sama liczbe co 'arg'

0
str:=floattostrf(liczba,ffnumber,100,5);
liczba:=strtofloat(str);

Jako 5 możesz podać inną liczbę miejsc po przecinku.

0

nie dziala...
Jeżeli nie dziele liczby przez 0, a mnoże razy siebie długie np 0,889909982681274*0,456120014190674 to wychdozmi mi NAN jak sie tego ustrzec jak pociac ten single?

0

pi =3.14159....
____^ tu jest kropka (Decimal point)

0

NaN - Not a Number

0

daj kod tego mnożenia

0

function Vector( vPoint1, vPoint2 : T3dPoint) : T3dPoint;
var
vVector : T3dPoint;
begin
vVector.X := 0.0; vVector.Y := 0.0; vVector.Z := 0.0;

vVector.x := vPoint1.x - vPoint2.x;
vVector.y := vPoint1.y - vPoint2.y;
vVector.z := vPoint1.z - vPoint2.z;

result := vVector;
end;

function Normal(point1, point2, point3 : t3dpoint; NormalizeNormal : boolean) : t3dpoint;
var
v1, v2 : t3dpoint;
vn : t3dpoint;
begin
vn.x := 0.0;
vn.y := 0.0;
vn.z := 0.0;
Result := vn;
v1 := Vector(point2, point1);
v2 := Vector(point3, point1);
vn := vectorcross(v1,v2);
if NormalizeNormal = true then vn := Normalize(vn);

Result := vn;
end;

function vectorcross(v1, v2 : t3dpoint) : t3dpoint;
var
crossproduct : t3dpoint;
begin
crossproduct.x := (v1.yv2.z)-(v1.zv2.y);
crossproduct.y := (v1.xv2.z)-(v1.xv2.z);
crossproduct.z := (v1.xv2.y)-(v1.yv2.x);
Result := crossproduct;
end;

wywoluje funckje normal

1 użytkowników online, w tym zalogowanych: 0, gości: 1