Hi Christian, In C++ the binary mathematical operators, +, -, *, and /, are defined for builtin types, int, double, etc., so that a statement of a binary operation involving two values of the same type will return an instance of that same type even if the mathematically correct result can only be stored by another type. If you divide one integer by another integer the return value will be an integer. int i; i = 150 / 100; // result, 1.5, is truncated at the decimal point, so i = 1 TMath::Sin( i ); // sin( 1 ) If you have different types in a binary expression, then the "lesser" type is implicitly "promoted" so that the same-type rule mentioned above is always obeyed. double i; c = 150.0 / 100; // same as 150.0 / static_cast<double>( 100 ) TMath::Sin( i ); Justin On Thu, 21 Aug 2003, cstrato wrote: > Dear Rooters > > By chance I came across the following problem: > root [13] TMath::Sin(100/100) > (Double_t)8.41470984807896505e-01 > root [14] TMath::Sin(150/100) > (Double_t)8.41470984807896505e-01 > root [15] TMath::Sin(1) > (Double_t)8.41470984807896505e-01 > root [16] TMath::Sin(1.5) > (Double_t)9.97494986604054446e-01 > root [23] TMath::Sin(150.0/100) > (Double_t)9.97494986604054446e-01 > > Although 150 and 100 are integers, 150/100 should be > recognized as real. > > (I am using root 3.10/00 for MacOS X) > > Best regards > Christian > _._._._._._._._._._._._._._._._ > C.h.i.s.t.i.a.n S.t.r.a.t.o.w.a > V.i.e.n.n.a A.u.s.t.r.i.a > _._._._._._._._._._._._._._._._ > > >
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:15 MET