从对象到字符串的不断转换

时间:2016-03-22 16:54:38

标签: c# reflection type-conversion

我有一个小数?在类中称为Balance的属性。我有这个类的两个对象,并且两个对象中的Balance的值是相同的(让我们说100)。 我使用反射从这两个对象中获取Balance的值

object bal1= type.GetProperty("Balance").GetValue(object1);
object bal2= type.GetProperty("Balance").GetValue(object2);

当我将对象转换为字符串时,我得到不同的值。

Console.WriteLine(bal1.ToString()); // output : 100.00
Console.WriteLine(bal2.ToString()); // output : 100

有人可以解释一下这背后的原因是什么?

1 个答案:

答案 0 :(得分:1)

  

两个对象的平衡是相同的

不,不是。小数会记住它分配了多少有效数字。这段代码:

decimal d1 = 100m;
decimal d2 = 100.000m;

Console.WriteLine(d1);
Console.WriteLine(d2);

将打印:

100
100.000

另见Why does a C# System.Decimal remember trailing zeros?