1

我在excel中有一个公式

SUM((((25+273))/((40+273))*((688.00*1.001)+101.325))-101.325)-8.46

这个公式给了我 642.36 的答案

我将此公式翻译为以下 c# 函数

public decimal CalculateBaselinePressure(decimal baselineTemperature, 
                                         decimal knownTemperature, 
                                         decimal knownPressure)
{
    return (baselineTemperature + 273) / (knownTemperature + 273) * 
           (((knownPressure * 1.001m) + 101.325m) - 101.325m) -8.46m;
}

这给了我 647.22378274760383386581469649M 的答案

知道为什么公式没有给出相同的答案。

4

2 回答 2

3

你的括号有区别。这是 Excel 公式的简化但等效版本:

(a+273) / (b+273) * (c*1.001 + 101.325) - 101.325 - 8.46

这就是您的 C# 表达式分解为

(a+273) / (b+273) * ((c*1.001 + 101.325) - 101.325) - 8.46;

您需要在乘法后删除一组括号。此外,您可能应该使用double而不是decimal

public static double CalculateBaselinePressure(
    double baselineTemperature,
    double knownTemperature,
    double knownPressure)
{
    return (baselineTemperature + 273) / (knownTemperature + 273) *
        ((knownPressure * 1.001d) + 101.325d) - 101.325d - 8.46d;
}
于 2013-09-04T20:22:15.567 回答
1

Excel 在内部使用双精度浮点数,只需在 C# 代码中使用double而不是decimal用于所有变量和常量。

于 2013-09-04T20:14:16.097 回答