我有一个字符串值,可以包含double,integer,ascii或byte值,我将该值放入JLabel。我希望double和long值的格式为4000000000000
,而不是java {JLabel默认打印样式4.0E12
。现在我知道字符串中的数据类型,但我不知道如何使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);
也是,它是一个很长的值,我省略了一些数据类型变量的清晰度。 我不知道这是否适用于所有情况,即使我确实让它工作。我需要它来处理整数,长整数,xtended,double和float。
答案 0 :(得分:1)
您必须使用其他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