如何在XAML中格式化double值以在最后删除零,而没有科学表示?

时间:2013-06-06 10:37:00

标签: c# wpf xaml listview string-formatting

我需要在ListView中显示双重值,如:0.00008。不幸的是,值通常表示为指数/科学:1E-8。我不希望用户看到1E-8类型的值。我不知道也不想知道所用双打的小数点精度。我不能围绕双打。我可以用c#解决这个问题:

string s = doubleValue.ToString("0.####################");  // gives what I need: 0,00008

如何使用xaml进行完全相同的格式化?

<ListView.View>
  <GridView AllowsColumnReorder="False">
    <GridView.Columns>
     <GridViewColumn.CellTemplate>
        <DataTemplate>
            <Border>
                <Grid>
                    <TextBlock x:Name="textBlock1" Text="{Binding Path=Profit, StringFormat={{???}}" TextTrimming="CharacterEllipsis"  />
                </Grid>
            </Border>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
  </GridView.Columns>
 </GridView>
</ListView.View>

或者如何使用c#将这种格式分配给后面的代码中的textBlock1?

4 个答案:

答案 0 :(得分:3)

<TextBlock x:Name="textBlock1"
            Text="{Binding Path=Profit,
                          StringFormat={}{0:0.####################}}"
            TextTrimming="CharacterEllipsis" />

答案 1 :(得分:0)

在许多情况下,您获得这些数字的原因是因为您实际上应该使用小数而不是双精度数。如果使用双精度计算,通常会得到很小的十进制误差,这很容易避免。

答案 2 :(得分:0)

试试这个:

Text="{Binding Profit, StringFormat='0.00000'}"

答案 3 :(得分:0)

尝试使用StringFormat = F6之类的东西,将您的数字格式化为6位小数