C# 十进制的System.OverflowException
在这里,我正在C#的项目中工作。但当我用这个代码运行函数的时候,程序就跟着这个掉了C# 十进制的System.OverflowException,c#,C#,在这里,我正在C#的项目中工作。但当我用这个代码运行函数的时候,程序就跟着这个掉了 在这里,您需要在每个步骤中将公式拆分为多个步骤,计算一个简单表达式,并将结果分配给一个单独的变量,以便在下一步中使用。这将允许您调试计算并查看简化最终公式的方法。十进制范围: -79228162514264337593543950335M至79228162514264337593543950335M 双量程: 1.7976931348623157E+308至-1.7976931348623157E+308 像这样
在这里,您需要在每个步骤中将公式拆分为多个步骤,计算一个简单表达式,并将结果分配给一个单独的变量,以便在下一步中使用。这将允许您调试计算并查看简化最终公式的方法。十进制范围: -79228162514264337593543950335M至79228162514264337593543950335M 双量程: 1.7976931348623157E+308至-1.7976931348623157E+308 像这样:
// vyteznost_CO2_s_vysokym_tlakem = x1 it mustn't be 0.00
// mars_g_acceleration = x2 it mustn't be 0.00
// martian_surface = x3 it mustn't be 0.00
decimal x1 = 1.11m,
decimal x2 = 1.11m;
double x3 = 1.11d;
double v1 = decimal.ToDouble(x1 * 1000000 * x2) / x3;
double v2 = v1 * 0.813008D;
double v3 = Convert.ToDouble(v2);
double v4 = Math.Log10(v3);
double v5 = Convert.ToDouble(v4 * 0.434294D);
double v6 = Math.Log10(v5);
decimal v7 = Convert.ToDecimal(-6164.64D / v6); //Result
`什么是
-6164.64/((数学Log10(转换为0.434294D*数学Log10(转换为0.813008D*(十进制)转换为0.813008D*(十进制)转换为100万*火星加速度)/火星表面‘‘‘‘‘‘‘‘‘‘‘‘’)
返回值?看起来它超出了decimal
边界。把它放在一个变量上,然后查看它的值。“值对于一个小数点来说太大或太小”-该错误消息是否不够清晰?复制实际的错误消息,并将其粘贴到文本中,而不是图片中。为了让我们理解这个问题,把所有的计算步骤都放到变量中,这样就更容易理解哪一步是有问题的。十进制只能处理10^-29到10^-29之间的数据。。。28-29位精度。除此之外(比如10^30),它无法处理
// vyteznost_CO2_s_vysokym_tlakem = x1 it mustn't be 0.00
// mars_g_acceleration = x2 it mustn't be 0.00
// martian_surface = x3 it mustn't be 0.00
decimal x1 = 1.11m,
decimal x2 = 1.11m;
double x3 = 1.11d;
double v1 = decimal.ToDouble(x1 * 1000000 * x2) / x3;
double v2 = v1 * 0.813008D;
double v3 = Convert.ToDouble(v2);
double v4 = Math.Log10(v3);
double v5 = Convert.ToDouble(v4 * 0.434294D);
double v6 = Math.Log10(v5);
decimal v7 = Convert.ToDecimal(-6164.64D / v6); //Result