3 回答

TA贡献1796条经验 获得超4个赞
double d = 3.1465926; String result = String.format("%.4f", d); System.out.println(result);
可以使用这个试试!

TA贡献1847条经验 获得超7个赞
楼主代码没错,而运行结果不是楼主所想的原因:是因为java标准是美国人制定的,而美国人常用运算思维是上述结果,不同于我们中国人的思维是四舍五入,所以java默认的格式是HALF_EVEN,这是美国人的思维。想要得到楼主想要的结果,只要加一行代码就行了。具体代码如下:
import java.text.DecimalFormat;
import java.math.RoundingMode;
public class Test1{
public static void main(String args[]){
DecimalFormat df = new DecimalFormat("###.0000"); df.setRoundingMode(RoundingMode.HALF_UP); double db1 = 12.00005; double db2 = 12.00006; double db3 = 12.000055; double db4 = 12.000056; System.out.println(df.format(db1)); // 输出结果是12.0001 System.out.println(df.format(db2)); // 输出结果是12.0001 System.out.println(df.format(db3)); // 输出结果是12.0001 System.out.println(df.format(db4)); // 输出结果是12.0001 }
}
这样就正确了 。
java.math
枚举 RoundingMode
java.lang.Object
继承者 java.lang.Enum
继承者 java.math.RoundingMode
java.text
类 DecimalFormat
java.lang.Object
继承者 java.text.Format
继承者 java.text.NumberFormat
继承者 java.text.DecimalFormat
不同舍入模式下的舍入操作汇总 根据给定的舍入模式将输入数字舍入为一位数的结果
输入数字 UP DOWN CEILING FLOOR HALF_UP HALF_DOWN HALF_EVEN UNNECESSARY
5.5 6 5 6 5 6 5 6 抛出 ArithmeticException
2.5 3 2 3 2 3 2 2 抛出 ArithmeticException
1.6 2 1 2 1 2 2 2 抛出 ArithmeticException
1.1 2 1 2 1 1 1 1 抛出 ArithmeticException
1.0 1 1 1 1 1 1 1 1
-1.0 -1 -1 -1 -1 -1 -1 -1 -1
-1.1 -2 -1 -1 -2 -1 -1 -1 抛出 ArithmeticException
-1.6 -2 -1 -1 -2 -2 -2 -2 抛出 ArithmeticException
-2.5 -3 -2 -2 -3 -3 -2 -2 抛出 ArithmeticException
-5.5 -6 -5 -5 -6 -6 -5 -6 抛出 ArithmeticException
至于详细的帮助,建议楼主下载一份java API文档学习。希望对楼主有帮助
添加回答
举报