Is it possible to work with big numbers like 256 bit unsigned integers in Motoko?

Hello Dears!

Is it possible to work with big numbers like 256 bit unsigned integers in Motoko?

`Nat` will represent numbers that large, but it’s not specific to a certain bit width.

When you say “working with”, what operations do you need?

Nat is described here (partly): Nat :: Internet Computer

I mean multiplication of two numbers like this one 123456789123456789 * 123456789123456789
when I did this then it produces “lost precision” error

Strange. I just tried the same multiplication in the Motoko repl and got this (no error):

``````Motoko compiler 0.6.5 (source ac3psafn-rp9bj68x-67s21qfv-z7fygv81)
> 123456789123456789 * 123456789123456789
;;
15_241_578_780_673_678_515_622_620_750_190_521 : Nat
>
``````

You get that error from the Motoko compiler, during compile time?

1 Like

Oh sorry, it works for me also. But the actual problem is causes from conversion more than 64bit number to Float. Now actual question is: Is there any way to get square root of numbers bigger than 64 bits?
Here the code:

``````var num = 112345678912345678900 * 112345678912345678900; // OK
var ftval = Float.fromInt(num); // <- error
var sqr = Float.sqrt(ftval);
``````

`canister trapped explicitly: losing precision`

1 Like

I opened new topic for this question

1 Like

Oh, hey if youre still here, I think Floating point numbers only have like x number of decimal precisioin for any language. If you want to use super big numbers you have to use massive ints but consider the last x number as “decimal” digits

1 Like