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,怎么可能?它取决于区域设置吗?