以下是我的属性,如果我们输入45然后它会追加45.00但是再次导致45,因为该值是从字符串转换的。那么我能实现这一目标的最简单方法是什么呢?如果他们输入45,那么它将在值字段中产生45.00;
public decimal Length
{
get { if (this is Detail)
return ((this as Detail).Length.ToString() == string.Empty)
? 0 : (this as Detail).Length; else return 0; }
set
{
if (this is Detail)
{
string val = string.Empty;
if (!value.ToString().Contains("."))
{
val = string.Format("{0}{1}", value.ToString(), ".00");
value =Math.Round(Convert.ToDecimal(val), 2);
}
else
value = Math.Round(value, 2);
(this as Detail).Length = (value.ToString().Trim() ==
string.Empty) ? 0 : value;
}
}
}
答案 0 :(得分:1)
val = string.Format("{0:0.00}", value);
答案 1 :(得分:0)
这与属性设置器无关。您需要在GUI中指定字符串格式以对数字进行舍入。
同样if (this is PersonalDetail)
是一个巨大的设计缺陷。改为替换PersonalDetail类中的Length属性。 (不确定这个属性的目的是什么)
答案 2 :(得分:0)
问题是45m和45.00m是相同的,因为这是一个小数,它将始终显示“45”而不是“45.00”,除非你每次尝试输出它时都使用字符串格式化。< / p>
您可以随时创建另一个输出所需内容的属性,例如:
public decimal Length { get; set; }
public string FormattedLength
{
get
{
return String.Format("{0:0.00}", this.Length);
}
}
另一方面,我不喜欢这样,但我相信它会让你或多或少地得到你想要的东西。