pow exponent type issue
    ag0aep6g via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Wed Aug 24 12:41:35 PDT 2016
    
    
  
On Wednesday, 24 August 2016 at 19:16:56 UTC, jmh530 wrote:
> I'm a little confused on why pow behaves so differently when 
> switching from an int to a uint for the exponent.
>
> import std.math : pow;
> import std.stdio : writeln;
>
> void main()
> {
>
> 	float x = 2;
> 	int y1 = 1;
> 	uint y2 = 1;
>
> 	writeln(pow(x, -y1));  //prints 0.5
> 	writeln(pow(x, -y2));  //prints inf
>
> }
-y1 is -1. But -y2 is uint.max, i.e. a pretty large positive 
number.
The 'u' in "uint" stands for "unsigned". That is, it doesn't know 
negative numbers. Dont' use uint when you need negative numbers.
    
    
More information about the Digitalmars-d-learn
mailing list