const double MAX_SAFE_INT = 9007199254740991;
public static void Main()
var rgn = new Random(Environment.TickCount);
double random = rgn.NextDouble();
double product = MAX_SAFE_INT * random;
Console.WriteLine($"{MAX_SAFE_INT}, {random}, product: {product}");
Decimal randomD = (Decimal)random;
Decimal maxD = (Decimal)MAX_SAFE_INT;
Decimal productD = maxD * randomD;
Console.WriteLine($"{maxD}, {randomD}, product: {productD}, {(double)productD}");