Idiomatic D code to avoid or detect devision by zero

Martin Tschierschke mt at smartdolphin.de
Mon Aug 3 09:53:40 UTC 2020


On Friday, 31 July 2020 at 14:18:15 UTC, Steven Schveighoffer 
wrote:
> On 7/31/20 9:55 AM, Martin Tschierschke wrote:
>> What would be the idiomatic way to write a floating point 
>> division
>> occuring inside a loop and handle the case of division by zero.
>> 
>> c = a/b; // b might be zero sometimes, than set c to an other 
>> value (d).
>> 
>> (In the moment I check the divisor being zero or not, with an 
>> if-than-else structure,
>> but I find it ugly and so I ask here.)
>
> c = b == 0 ? d : a/b;
>
> I don't think a function would be shorter or clearer...
>
> c = div(a, b, d);
>
> Alternatively, you could use a type to effect the behavior you 
> want.
>
> -Steve

Thanks, for the hints.
I find the ? :  - expressions sometimes hard to reed, especially 
when a and b are not so  simple expressions.

I prefer putting additional bracket around:
c = (b_expression == 0) ? (d_longer_expression) : 
(a_expression/b_expression);

???


More information about the Digitalmars-d-learn mailing list