从 WSDL 文件生成的类中的 double 属性问题

Issue with double property in a generated class from a WSDL file

提问人:Pratik Gon 提问时间:10/31/2023 更新时间:10/31/2023 访问量:25

问:

我在从 WSDL 文件生成的类中遇到了一个特殊的 double 属性问题。让我带您了解代码和我面临的问题。

首先,我有一个 foreach 循环,我在其中执行一些计算并创建名为 FeeType 的类的对象。然后,这些对象将添加到名为 FeeTypesList 的列表中。下面是相关的代码片段:

foreach (var receipt in receiptValues)
{
    decimal rtd = Convert.ToDecimal(realisation.ReceiptAmount);
    decimal actualAmount = // some calculated value.

    FeeType builtObject = new FeeType()
    {
        CaseId = receipt.CaseId,
        ReceiptId = receipt.ReceiptId,
        ReceiptEffectiveDate = receipt.ReceiptEffectiveDate,
        FeeAmount = Convert.ToDouble(Math.Round(actualAmount, 1)),
    };

    FeeTypesList.Add(builtObject);
}

FeeType 类是从 WSDL 文件生成的,并包含 double 类型的 FeeAmount 属性。下面是它的样子:

public partial class FeeType
{
    private int caseIdField;
    private int receiptIdField;
    private System.DateTime receiptEffectiveDateField;
    private double feeAmountField;

    public int CaseId
    {
        get { return this.caseIdField; }
        set { this.caseIdField = value; }
    }
    
    public int ReceiptId
    {
        get { return this.receiptIdField; }
        set { this.receiptIdField = value; }
    }
 
    public System.DateTime ReceiptEffectiveDate
    {
        get { return this.receiptEffectiveDateField; }
        set { this.receiptEffectiveDateField = value; }
    }
    
    public double FeeAmount
    {
        get { return this.feeAmountField; }
        set { this.feeAmountField = value; }
    }
}

我面临的问题是,当我检查 builtObject 中的 FeeAmount 属性时(在将其添加到列表中之前),它显示正确的值,例如 0。但是,在将对象添加到 FeeTypesList 后,当我检查列表中的 FeeAmount 属性时,它显示 -0。我附上了屏幕截图以供参考: 对象中的 FeeAmount 属性值 列表中的 FeeAmount 值

我已经彻底调试了每个步骤,但找不到为什么它在添加到列表后显示 -0。任何见解或解决方案将不胜感激。

C# WSDL net-6.0

评论

0赞 PMF 10/31/2023
您是否在调试器中也检查了添加后的值?0 以外的值会发生什么情况?对我来说,这看起来像是显示值的代码中的问题。
0赞 Pratik Gon 10/31/2023
除 0 以外的值显示正确。只有在 0 的情况下,有些被添加为 0,有些被添加为 -0。
0赞 PMF 10/31/2023
我想这是一个四舍五入的问题,其中打印了数字。找到代码的那部分并检查确切的值(可能是 -0.000000000001 或其他值)
0赞 Pratik Gon 11/1/2023
我以为同样的删除回合操作,但它只有 0,但在添加到列表中后,我看到 -0。
0赞 PMF 11/1/2023
显示打印数字的代码。

答: 暂无答案