digitalmars.D.learn - So I found this using 2 to the power of >= 31
- Carlos (47/47) Jun 12 2013 I have this code :
- Carlos (10/10) Jun 12 2013 import std.stdio;
- Jonathan M Davis (13/25) Jun 12 2013 If you want to set the type of count, then give it a type instead of let...
- Carlos (4/31) Jun 12 2013 Great! Thanks!
- bearophile (10/11) Jun 12 2013 If you want to avoid the overflow, then use a BigInt from
- Carlos (2/13) Jun 13 2013 :D Great!
I have this code : import std.stdio; import std.c.stdlib; void main() { foreach (count; 1 .. 33){ write((2)^^(count), " : ", count, "\n"); } exit (0); } And here is the output : 2 : 1 4 : 2 8 : 3 16 : 4 32 : 5 64 : 6 128 : 7 256 : 8 512 : 9 1024 : 10 2048 : 11 4096 : 12 8192 : 13 16384 : 14 32768 : 15 65536 : 16 131072 : 17 262144 : 18 524288 : 19 1048576 : 20 2097152 : 21 4194304 : 22 8388608 : 23 16777216 : 24 33554432 : 25 67108864 : 26 134217728 : 27 268435456 : 28 536870912 : 29 1073741824 : 30 -2147483648 : 31 0 : 32 ----------------------------------------------------------------------- Everything goes well until the power of 31 and then above that it will be cero. What do I have to know about how D works with data ?
Jun 12 2013
import std.stdio; import std.math : pow; void main() { cast(ulong)count; foreach (count; 1 .. 33){ write((2)^^(count), " : ", count, "\n"); } } same output.
Jun 12 2013
On Thursday, June 13, 2013 03:46:59 Carlos wrote:import std.stdio; import std.math : pow; void main() { cast(ulong)count;That line won't compile.foreach (count; 1 .. 33){ write((2)^^(count), " : ", count, "\n"); } } same output.If you want to set the type of count, then give it a type instead of letting foreach infer it. Integeral literals are inferred to be int, so if you don't give count a type, it'll be int. import std.stdio; import std.math : pow; void main() { foreach(ulong count; 1 .. 33) writefln("%s: %s", 2^^count, count); } - Jonathan M Davis
Jun 12 2013
On Thursday, 13 June 2013 at 02:03:35 UTC, Jonathan M Davis wrote:On Thursday, June 13, 2013 03:46:59 Carlos wrote:Great! Thanks! I would use another space before the ":" . writefln("%s : %s", 2^^count, count);import std.stdio; import std.math : pow; void main() { cast(ulong)count;That line won't compile.foreach (count; 1 .. 33){ write((2)^^(count), " : ", count, "\n"); } } same output.If you want to set the type of count, then give it a type instead of letting foreach infer it. Integeral literals are inferred to be int, so if you don't give count a type, it'll be int. import std.stdio; import std.math : pow; void main() { foreach(ulong count; 1 .. 33) writefln("%s: %s", 2^^count, count); } - Jonathan M Davis
Jun 12 2013
Carlos:What do I have to know about how D works with data ?If you want to avoid the overflow, then use a BigInt from std.bigint: import std.stdio, std.bigint; void main() { foreach (immutable i; 0 .. 100) writeln(i, " ", 2.BigInt ^^ i); } Bye, bearophile
Jun 12 2013
On Thursday, 13 June 2013 at 02:41:46 UTC, bearophile wrote:Carlos::D Great!What do I have to know about how D works with data ?If you want to avoid the overflow, then use a BigInt from std.bigint: import std.stdio, std.bigint; void main() { foreach (immutable i; 0 .. 100) writeln(i, " ", 2.BigInt ^^ i); } Bye, bearophile
Jun 13 2013