【问题标题】:How to format the double values in JavaFX TableView [duplicate]如何在 JavaFX TableView 中格式化双精度值 [重复]
【发布时间】:2017-04-03 07:16:43
【问题描述】:

我对此进行了一些研究,并找到了仅针对字符串格式化的解决方案。我试图格式化一个尾随 0 的十进制数,而不转换为字符串。

例如:0.439 --> 0.4390

如何做到这一点?

我正在用十进制数字填充表格。我只是希望它看起来整洁。

【问题讨论】:

  • 如果只想显示,为什么不能转成String呢?
  • @user3437460 我正在用十进制数填充表格。我只是希望它看起来整洁。
  • 只需使用您找到的那些方法。 String.format() 或 DecimalFormat。如果您正在填充 sql 表,那么您可以使用不同的标签并询问如何格式化表中的数字。
  • @user3437460 在表模型为双倍时不起作用。我正在动态填充数字
  • “我无法在此处显示任何代码”。嗯?为什么不能显示代码?如果您懒得写一些代码来演示您所面临的问题,您为什么希望有人花时间帮助您?

标签: java javafx format


【解决方案1】:

@Milan 您是否使用 SimpleStringProperty 作为您的字段类型?

不,我使用的是数组列表

并不是使用String.format()DecimalFormat 类的格式不起作用。这是因为您的表模型中的字段不是String 类型。

将双精度值格式化为字符串后,您仍然需要将其转换为类似于您的表格字段的类型。

【讨论】:

  • @Milan 您可能还想在链接中粘贴您的 TableModel 代码..
  • 您不应仅仅为了方便以您想要的方式显示它而更改数据类型。如果数据是数字,则需要将它们保留为数字数据类型。否则,当您实际需要在某处使用数据时,您会发现必须进行各种类型转换。
  • 不,我不建议 OP 更改字段的类型。
  • "这是因为您的表模型中的字段不是String 类型"似乎暗示您认为应该将其更改为字符串...
  • 这只是告诉 OP 可能导致错误的原因。
【解决方案2】:

如果您想执行计算并将结果作为双精度发送到您的表/api,您可以使用 BigDecimal。所以你可以设置四舍五入,数字等。然后获取双精度值。

BigDecimal d = new BigDecimal(1.0);
d = d.setScale(2, BigDecimal.ROUND_CEILING);
d = d.multiply(new BigDecimal(2.0));
double tableValue = d.doubleValue();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多