【发布时间】:2013-11-12 18:02:10
【问题描述】:
这当然是一个简单的问题,但我找不到解决方案。它与this question 正好相反。就我而言,我的 ViewModel 上有一个小数点和一个字符串属性,如下所示:
public string FactorText
{
get
{
if (this.Factor != 0)
{
return this.Factor.ToString();
}
}
set
{
this._factorText = value;
}
}
public decimal Factor { get; set; }
当.ToString()起作用时,它会在右边用零填充数字,例如:
-
1.1变为1.100000000000000 -
1.9999999999变为1.999999999900000
... 等等。它用零填充小数点后 15 位。
我真的不知道为什么以及是否有办法确保.ToString() 停止这样做。
如果此信息是相关的,则该因子与 Fluent NHibernate 映射如下:
Map((x) => x.Factor).Column("FACTOR").Precision(30).Scale(15).Not.Nullable();
我不知道这是否是导致这种行为的原因。
谢谢你的建议。
更新:我只是无法更改比例和精度。它们与数据库定义中的列 Decimal(30,15) 匹配。
【问题讨论】:
-
嗯,大概 NHibernate 提供了一个带有所有尾随零的
decimal值。 -
@JonSkeet 但是当我停在此处的断点
return this.Factor.ToString();时,因子值为1,1。 -
你的意思是在调试器中?恐怕不要假设调试器会使用与其他任何东西相同的表示。
-
@JonSkeet 是的,在调试器中。好吧,在这种情况下,我很困惑。
-
基本上,恐怕不要相信调试器。您也许可以深入了解更多细节,但我强烈怀疑该值真的是 1.100000000000000m。
标签: c# asp.net asp.net-mvc nhibernate fluent-nhibernate