PropertyInfo[] info = this.domain_obj.GetType().GetProperties();
for (int i = 0; i < info.Length; i++)
{
if (info[i].Name=="TDMJ")
{
if (info[i].GetValue(domain_obj, null) != null)
{
object obj1 = info[i].GetValue(domain_obj, null); //得到obj1为5.65423M
object obj2 = 5.65423M; if (obj1.Equals(obj2)) // true
{ }
string d1 = obj1.ToString(); //得到值为 5.654230
string d2 = obj2.ToString();//得到值为 5.65432
//为什么d1后面会多一个0;
}
}
}
说明:obj1是获取的系统某个类里面的公共属性的值 属性名字是TDMJ 数据类型是decimal
obj2是自己定义的
object obj2 = 5.654230M;
肯定会把后面的0给输出。
实际应该类似于 SqlServer 里的 decimal,
如 decimal(10,3) ,为3位小数,而c#里定义时不需要指定小数位,而是根据内容自动调整小数位,
但它存储格式是固定小数位的,可以根据运算或赋值自动调整位数,
public decimal d1 { get; set; } static void Main(string[] args)
{
Program p = new Program();
p.d1 = 5.65423M; PropertyInfo pi = p.GetType().GetProperty("d1");
object obj1 = pi.GetValue(p, null);
object obj2 = 5.65423M; Console.WriteLine(obj1.ToString() + "---" + obj2.ToString());//输出:5.65423M---5.65423M
}
我模拟了一下,没发现这个情况啊
不知何故。。