Java:如何设置Double的最大长度?

时间:2015-10-08 07:22:00

标签: java string double

如何设置双倍的最大长度?

double divSum = number1 / number2;  
String divDisplay = number1 + " / " + number2 + " = " + divSum + " "; 

JLabel divSumLabel= new JLabel();
divSumLabel.setText(divDisplay)

如何设置divSum的最大长度?

1 / 3 = 0.333333...如何设置最大长度,因此只有0.333

我能做到:
int maxLenght = 3;

String stringDivSum = String.valueOf(divSum);
String shortDivSum = null; 
if(stringDivSum.length() > maxLenght){
    shortDivSum = stringDivSum.substring(0, maxLenght);
}

String divDisplay = number1 + " / " + number2 + " = " + shortDivSum + " ";
但是,当我1 / 3时,它打印出1 / 3 = 0.3

5 个答案:

答案 0 :(得分:3)

  

使用String.format(...)

String.format()

double divSum = Double.parseDouble(String.format("%.3f",(double)number1  /  number2)) ;

精确,双倍。

  

我们可以指定double或float的精度。我们使用“f”来   表示一个浮点。在此之前,我们指定“.3”表示“三   小数点后的数字。“

答案 1 :(得分:0)

double dblValue2 = Math.round( .333333 * 1000.0 ) / 1000.0;

答案 2 :(得分:0)

这会对你有所帮助

String.format("%.2f", (double)value);

答案 3 :(得分:0)

你可以尝试

System.out.format("%.2f + %.2f = %.2f",number1,number2,divsum)

你基本上告诉格式化程序期望3个浮点数带有2个小数点%.2f。根据您的需要提供变量非常重要,因此编写,number1,number2,divsum将产生与编写,number2,number1,divsum不同的结果。如果要打印int,short或long,则使用%d 。如果要打印字符串,请使用%s。但你也可以google。

此外,在数学运算的情况下,将数字数据存储在String中是一种毫无意义的练习,只会使你的代码膨胀。

答案 4 :(得分:0)

如果要以3的比例(即小数点后3位数)存储除法结果,则需要使用BigDecimal。该类允许对十进制值进行任意精度计算。

int number1 = 1, number2 = 3;
BigDecimal divSum = BigDecimal.valueOf(number1).divide(BigDecimal.valueOf(number2), 3, RoundingMode.DOWN);

BigDecimal的{​​{3}}函数可以采用比例(此处设置为3)和舍入模式(此处设置为divide(divisor, scale, roundingMode),此舍入模式在达到比例后截断,这就是我们想要的)。这将执行除法,结果将以3的比例向下舍入。

然后您可以使用以下方式打印结果:

String divDisplay = number1 + " / " + number2 + " = " + divSum + " ";
System.out.println(divDisplay); // prints "1 / 3 = 0.333"