A division problem

bearophile bearophileHUGS at lycos.com
Sun Mar 23 20:55:40 PDT 2014


This kind of code sometimes is wrong, because you forget to cast 
x to double before the division and you lose precision (but here 
the compiler knows that the result of the division will go inside 
a double):


void main() {
     int x = 15;
     double y = x / 10;
}

The cause is that unfortunately in D the integer division uses 
the same operator as the FP division. In Python there is the / 
and // operators. In OcaML there are the / and /., in Delphi 
there are the / and div operators, in Ada the two operands need 
to be of the same type.

Seasoned C/C++/D programmers watch for the types every time they 
perform a division, to avoid that trap. But less experienced 
programmers introduce bugs with divisions. Can D help the 
programmer reduce the frequency of similar bugs? And do we want 
to?

Bye,
bearophile


More information about the Digitalmars-d mailing list