正如标题所说,我想限制使用 double 类型变量的操作产生的小数位数,这个结果显示在 JFrame 的 JTextArea 中。
执行操作并在 JTextArea 中打印结果的代码如下: ( la
,表示三角形的边,lb
计算面积,是打印结果的 JTextArea)。lc
a
A
if (lb+lc>la && la+lc>lb && la+lb>lc){
a=Math.sqrt((la+lb+lc)*(-la+lb+lc)*(la-lb+lc)*(la+lb-lc)/16);
p=la+lb+lc;
A.setText("El triangulo es "+t+".\nEl area es ("+a+").\nEl perimetro es ("+p+").");
有很多方法可以限制 a 的输出小数位数(Presentation),
double
但不能限制数字本身,例如double number = 1.4159999999;
将输出限制为 2个小数位。如果您想要更多数字,只需将零添加到String.formatdecimalformat
和printf setScale BigDecimal`Round, cambiar el 2 por por la cantidad deseada en
y
Y y en
de
使用十进制格式
使用字符串格式
如果您只希望输出具有该格式,您将应用 numberformat
使用Math.Round()其中零的数量是要限制的小数位数
使用BigDecimal类,使用setScale方法接收两个参数:要限制的小数位数和舍入模式
尝试使用 String.format
您可以像这样组合所有内容,在这种情况下,它是一种紧凑的形式,可让您在一行中将所有内容一起格式化。
请注意,格式会自动采用区域设置,因此根据国家/地区,您可以使用
.
或,
作为小数分隔符。您可以使用
DecimalFormat
. 例如:它会将您的值返回到小数点后三位。您必须在整数之后添加(或删除)与小数一样多的零。
我发现最好的方法是减少双精度的小数位数:
number:所有小数的值
numberDecimals:我想检索多少个小数
例如:2.8049999999999997 返回 2.805
双 val = formatDecimals(2.8049999999999997, 3);
如果要限制不四舍五入的小数位数,可以这样做: