C# 为什么我会得到不同的小数点?
我创建了一个包含多个字段的结构。C# 为什么我会得到不同的小数点?,c#,decimal,C#,Decimal,我创建了一个包含多个字段的结构。 在该结构中,我有一个属性,该属性调用一个方法,然后该方法从这些数字中创建一个字符串用于日志记录。 当我在结构中使用属性时,与直接调用创建日志字符串的实际方法时相比,我得到了不同的小数点 假设我有9990M,如果我使用这个结构,它是9990.0000,当我直接调用这个方法时,它会打印9990.00 这是我的方法: private static string CreateLog( long userId, decimal amount, long t
在该结构中,我有一个属性,该属性调用一个方法,然后该方法从这些数字中创建一个字符串用于日志记录。
当我在结构中使用属性时,与直接调用创建日志字符串的实际方法时相比,我得到了不同的小数点
假设我有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如下所示(调用前一个方法)
为什么是这样?这里有什么问题?可能正在进行某种内部规范化。如果您关心这些问题,则需要在ToString或String.Format方法中指定小数位数
查找Decimal.ToString(字符串)中的选项。通常我使用“Nx”,其中x是小数位数。我使用Fx而不是Nx,因为我不需要分隔符。再次感谢,但我想知道到底是什么原因导致了这种差异。实际上,十进制值可以存储为9990 x 10^0或999 x 10^1或99900 x 10^1。您必须阅读规范并检查原始内存,以便准确地确定它何时从一个版本转换到另一个版本。(或者完全是别的东西。)非常感谢,我来看看
private static string CreateLog(AccountStruct accinfo)
{
return CreateLog( accinfo.USER_ID,
accinfo.AMOUNT,
accinfo.TRANSACTION_ID,
accinfo.CURRENT_CASH);
}