2013-08-29 89 views
0

价格值(双倍)有时为1.23000,有时为1.230。我的ListView显示它为1.23。但是很不幸的小数点变化NUMER,我不能用即:F5或FormatString显示全部为零

StringFormat='{}{0:#,00000}' 

如何使用的StringFormat始终显示全零?

<TextBlock Text="{Binding Path=Price, StringFormat={Binding Path=DecimalPoints}}" /> 

回答

1

其实WPF显示了double的正确值。

如果您尝试运行

if (1.230000000d == 1.23d) throw new ArgumentException("Values are equal"); 

,你会发现,价值总是相等的。只要编译器将字符串表示转换为double,额外的零就消失了。

你可以尝试实现自己的Price类,因为这将让您保持与代表的价值,

public class Price 
{ 
    public double Value {get;set;} 
    public int precision {get;set;} 

    public override ToString() 
    { 
     return value.ToString("F"+precision); 
    } 
}