为什么我会得到不同的小数点?

时间:2014-12-02 04:49:53

标签: c# decimal

我创建了一个包含多个字段的结构 在该结构中,我有一个属性,该属性调用一个方法,然后从这些数字中创建一个字符串用于记录目的 当我在结构中使用属性时,当我直接调用创建日志字符串的实际方法时,我得到不同的小数点V! 假设我有9990M,如果我使用的结构是9990.0000,当我直接调用该方法时它打印9990.00

这是我的方法:

private static string CreateLog(
    long userId, decimal amount,
    long transactionID, decimal totalCash)
{


    Values = string.Format("{0}{1}{2}{3}",
                            amount,
                            userId,
                            transactionId,
                            totalCash);
    return Values;
}

我的结构看起来像这样:

public struct AccountStruct
        {
            public long USER_ID;
            public decimal AMOUNT;
            public long TRANSACTION_ID;
            public decimal CURRENT_CASH;
            string ValuesToBeLoged
            {
                get
                {
                   return CreateLog(this);
                }
            }

        }

CreateLog看起来像这样(调用前一种方法)

private static string CreateLog(AccountStruct accinfo)
        {
            return CreateLog(  accinfo.USER_ID,
                               accinfo.AMOUNT,
                               accinfo.TRANSACTION_ID,
                               accinfo.CURRENT_CASH);
        }

为什么会这样?这是什么问题?

1 个答案:

答案 0 :(得分:1)

可能正在进行某种内部规范化。如果您关心这些问题,则需要在ToString或String.Format方法中指定所需的小数位数。

查找Decimal.ToString(String)作为选项。通常我会使用" Nx"其中x是小数位数。