Java 将double/float精确到2位小数点
时间:2020-02-23 14:35:10 来源:igfitidea点击:
在本教程中,我们将看到如何在Java中转到2个小数点。
有很多方法:
使用Math.Round(Double * 100.0)/100.0
package org.igi.theitroad; public class MathRoundMain { public static void main(String[] args) { double d=2343.5476; double roundedDouble = Math.round(d * 100.0)/100.0; System.out.println("Rounded double: "+roundedDouble); float f=2343.5476f; float roundedFloat = (float)Math.round(f * 100.0)/100.0; System.out.println("Rounded float: "+roundedFloat); } }
你必须想知道这是如何工作的。
Double * 100.0 - 234354.76 Math.round(双* 100.0) - 234355.00(圆形到最近值)Math.Round(Double * 100.0)/100.0 - 2343.55
使用decimalformat
我们也可以使用DECIMALFORMAT到2个小数位。
package org.igi.theitroad; import java.text.DecimalFormat; public class DecimalFormatMain { public static void main(String[] args) { double d=2343.5476; DecimalFormat df = new DecimalFormat("###.##"); System.out.println("Rounded double (DecimalFormat) : " + df.format(d)); } }
使用BigDecimal.
我们可以将双倍或者浮动转换为BigDecimal和使用
setScale()
循环到2个小数位的方法。
这是一个例子:
package org.igi.theitroad; import java.math.BigDecimal; import java.math.RoundingMode; public class BigDecimalRoundDoubleMain { public static void main(String[] args) { double d = BigDecimalRoundDoubleMain.roundDouble(2343.5476, 2); System.out.println("Rounded Double: "+d); float f = BigDecimalRoundDoubleMain.roundFloat(2343.5476f, 2); System.out.println("Rounded Float: "+f); } private static double roundDouble(double d, int places) { BigDecimal bigDecimal = new BigDecimal(Double.toString(d)); bigDecimal = bigDecimal.setScale(places, RoundingMode.HALF_UP); return bigDecimal.doubleValue(); } private static float roundFloat(float f, int places) { BigDecimal bigDecimal = new BigDecimal(Float.toString(f)); bigDecimal = bigDecimal.setScale(places, RoundingMode.HALF_UP); return bigDecimal.floatValue(); } }
使用apache common math
你也可以使用 Apache common
数学库 回合 double
或者 float
到2个小数点。
添加以下依赖 pom.xml
。
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-math3</artifactId> <version>3.6.1</version> </dependency>
我们可以在此处找到Commons-Math的版本。
这是一个例子:
package org.igi.theitroad; import org.apache.commons.math3.util.Precision; public class ApacheMathDoubleMain { public static void main(String[] args) { double d=2343.5476; double roundedDouble = Precision.round(d,2); System.out.println("Rounded double: "+roundedDouble); float f=2343.5476f; float roundedFloat = Precision.round(f, 2); System.out.println("Rounded float: "+roundedFloat); } }