价格值(双倍)有时为 1.23000,有时为 1.230。我的 ListView 显示为 1.23。不幸的是,小数点数发生了变化,我不能使用,即:F5 或
StringFormat='{}{0:#,00000}'
如何使用 StringFormat 始终显示全零?
<TextBlock Text="{Binding Path=Price, StringFormat={Binding Path=DecimalPoints}}" />
价格值(双倍)有时为 1.23000,有时为 1.230。我的 ListView 显示为 1.23。不幸的是,小数点数发生了变化,我不能使用,即:F5 或
StringFormat='{}{0:#,00000}'
如何使用 StringFormat 始终显示全零?
<TextBlock Text="{Binding Path=Price, StringFormat={Binding Path=DecimalPoints}}" />
实际上 WPF 正在显示双精度的正确值。
如果你尝试跑步
if (1.230000000d == 1.23d) throw new ArgumentException("Values are equal");
你会发现这些值总是相等的。一旦编译器将字符串表示形式转换为 adouble
额外的零就消失了。
您可以尝试实现自己的Price
类,因为这将使您能够将表示与值保持一致,
public class Price
{
public double Value {get;set;}
public int precision {get;set;}
public override ToString()
{
return value.ToString("F"+precision);
}
}