I have numbers that need precision of at least 10 decimals, while they are as big as 10^8.

Is this possible??

I have numbers that need precision of at least 10 decimals, while they are as big as 10^8.

Is this possible??

Yes this is possible.

Because Unity runs Mono, you have access to all the standard .net base types. There are a number of different base types of varying precision which you can use to hold numeric values:

```
Name Type Signed Bytes Values
sbyte System.Sbyte Yes 1 -128 to 127
short System.Int16 Yes 2 -32768 to 32767
int System.Int32 Yes 4 -2147483648 to 2147483647
long System.Int64 Yes 8 -9223372036854775808 to 9223372036854775807
byte System.Byte No 1 0 to 255
ushort System.Uint16 No 2 0 to 65535
uint System.UInt32 No 4 0 to 4294967295
ulong System.Uint64 No 8 0 to 18446744073709551615
float System.Single Yes 4 Approximately 1.5 x 10-45 to 3.4 x 1038
with 7 significant figures
double System.Double Yes 8 Approximately 5.0 x 10-324 to 1.7 x 10308
with 15 or 16 significant figures
decimal System.Decimal Yes 12 Approximately 1.0 x 10-28 to 7.9 x 1028
with 28 or 29 significant figures
```

In your case, it sounds like you'd want to use either **double** or **decimal**.

**double** has a lower precision, but a wider range of potential exponents, and - like **float** - is not "decimally accurate" becuase it stores values as a binary floating point type.

**decimal** has much higher precision, and is "decimally accurate" because it stores values as a decimal floating point type. For this reason, it's generally used for "naturally exact decimal values", such as financial calculations.

If you came here looking for how to use `UInt64`

or `UInt32`

in Unity - most likely as a result of getting a compiler error when using one; Then simply include:

```
using System;
```

At the top of your script and the errors should go away.