如何在JLabel和JTextField上显示非科学格式的值



我有一个字符串值,它可以包含一个双精度、整数、ascii或字节值,并将该值放入JLabel中。我希望double和long值采用4000000000000的形式,而不是4.0E12的javaJLabel默认打印样式。现在我知道了字符串中的数据类型,但我不知道如何使JLabel只显示双精度值和整数值的非科学形式。

以下是我迄今为止尝试的内容:

String str = value; // string that holds the value
switch (var) // var that says which data type my str is
{
  case LONG:
  //convert my string from scientific to non-scientific here
  break;
  case DOUBLE:
  //convert my string from scientific to non-scientific here
  break;
  case ASCII:
  //do nothing
  break;
  ...
}
JLabel label = new JLabel();
label.setText(str); //Want this to be in non-scientific form

但这种方法仍然只是打印出科学的形式。

编辑:

我的转换看起来像:

str = new DecimalFormat("#0.###").format(str);

是的,这是一个长值,我为clearity省略了一些数据类型变量。我不知道这是否适用于所有情况,即使我真的做到了。我需要它来处理integer、long、extended、double和float。

您必须使用不同的JLabel,因为默认情况下它不会进行任何转换

JFrame frame = new JFrame();
JLabel label = new JLabel();
DecimalFormat df = new DecimalFormat("#0.###");
label.setText(df.format(4e12));
frame.add(label);
frame.pack();
frame.setVisible(true);

显示带有的窗口

4000000000000

我只得到以下转换

DecimalFormat df = new DecimalFormat("#0.###");
System.out.println(df.format(400000000));
System.out.println(df.format(4000000000000L));
System.out.println(df.format(4e12f));
System.out.println(df.format(4e12));

打印

400000000
4000000000000
3999999983616   <- due to float rounding error.
4000000000000

相关内容

  • 没有找到相关文章

最新更新