我有一个
检索该值后,我发现它是1,但是当我调用
我意识到8位小数对应于数据库中的数据类型。然而,在Entity Framework生成的属性中没有任何属性或任何东西可以给予它这种行为,因此我不知道这是如何发生的。
以下是我在Immediate窗口中进行的一些测试:
如您从最后两个测试中所看到的,这并不是浮点误差(尽管我并没有期望它,因为十进制是定点数,但我不得不尝试一下,因为我想不出其他的方法)。
您有任何想法吗? 十进制数据类型的
decimal
类型的变量,其值为1.0
。我将其保存到SQL Server 2012表中的列中,其类型为decimal(10, 8)
。检索该值后,我发现它是1,但是当我调用
ToString()
方法时,返回的值是"1.00000000"
(如下所示)。我意识到8位小数对应于数据库中的数据类型。然而,在Entity Framework生成的属性中没有任何属性或任何东西可以给予它这种行为,因此我不知道这是如何发生的。
以下是我在Immediate窗口中进行的一些测试:
myDecimal
1
myDecimal.ToString()
"1.00000000"
myDecimal == 1
true
myDecimal == 1.0m
true
如您从最后两个测试中所看到的,这并不是浮点误差(尽管我并没有期望它,因为十进制是定点数,但我不得不尝试一下,因为我想不出其他的方法)。
您有任何想法吗? 十进制数据类型的
ToString()
如何产生带有8位小数的字符串?
编辑:作为比较,请看下面的测试。1m.ToString()
"1"
1.00000000
表示为1.0
而无需告诉它吗?如果是1.12345678
,你是否期望C#默认返回1.1
? - Tanner