Java 如何将圆点后的双精度数字转换为2?

Java 如何将圆点后的双精度数字转换为2?,java,android,Java,Android,可能重复: 如何将圆点后的双精度数字转换为2 例如: double x=123.45678; 我需要这个x=123.45(用java for android) 提前感谢使用类正确设置数字格式 x = Math.floor(x * 100) / 100; 具体来说,在您的情况下,您可以执行以下操作。虽然这不是十分友好 mNumberFormat = NumberFormat.getInstance(); mNumberFormat.setMinimumFractionDigits(2); m

可能重复:

如何将圆点后的双精度数字转换为2

例如:

double x=123.45678;
我需要这个
x=123.45
(用java for android)

提前感谢

使用类正确设置数字格式

x = Math.floor(x * 100) / 100;
具体来说,在您的情况下,您可以执行以下操作。虽然这不是十分友好

mNumberFormat = NumberFormat.getInstance();
mNumberFormat.setMinimumFractionDigits(2);
mNumberFormat.setMaximumFractionDigits(2);
用这个,

  NumberFormat formatter = new DecimalFormat("#0.00");
 x=formatter.format(x);

设置double格式的最佳方法是使用NumberFormat类:

您将执行以下操作:

NumberFormat nf = NumberFormat.getInstance(); // get instance
nf.setMaximumFractionDigits(2); // set decimal places
String s = nf.format(x);
您也可以将其转换回双精度。

尝试此代码

double x=123.45678;
DecimalFormat df = new DecimalFormat("#.##");
String dx=df.format(x);
x=Double.valueOf(dx);

如果你想让两位数正确地四舍五入,我会选择大小数:

        BigDecimal bd = new BigDecimal(x);
        System.out.println(bd.setScale(2,BigDecimal.ROUND_HALF_EVEN).toPlainString());

是否要将
x
double
转换为不同的类型(例如
String
中打印的点后面只有两个数字)?或者你想保留double但截断那部分吗?遵循这个链接,我使用这个方法,但是如果数字有6.50这样的例子,它显示6.5。如何添加零?@GeorgePanayi,您是指字符串格式,请参阅。首先检查
Math.abs(x)%1.0<0.005。如果是整数,则将
x
格式化为整数,如果是小数,则使用
new DecimalFormat(“x”)。使用有效的字符串。线程“main”java.lang.NumberFormatException中的异常:输入字符串:sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)在sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)在java.lang.Double.parseDouble(Double.java:538)在java.lang.Double.valueOf(Double.java:502)我使用它,但它以这种形式显示值“7016,01”而不是“7016.01”。它显示的是qoma而不是dot.replace,by.in dx:x=Double.valueOf(dx.replace(',','));@sajid45,怎么可能?它取决于区域设置吗?