在java中将浮点数舍入到7位有效数字[重复]

Posted

技术标签:

【中文标题】在java中将浮点数舍入到7位有效数字[重复]【英文标题】:rounding a float to 7 significant digits in java [duplicate] 【发布时间】:2015-03-04 11:12:58 【问题描述】:

我得到一个浮点数作为我想将其四舍五入为 7 位有效数字的方法的输出。例如:

如果 1.234 输出应该是 1.234000

如果 7.1232478 输出应该是 7.123248

我试过了

sum=sum*1000000/1000000;

System.out.println(Float.toString(sum).substring(0,8));

有没有更好的方法来做到这一点?

【问题讨论】:

***.com/questions/12806278/… 该链接没有特别提到舍入问题。那里的答案可以很容易地扩展到涵盖它,我添加了一个显示扩展名的答案 【参考方案1】:

如果要显示结果,请使用System.out.printf(".7f");String.format(".7f")

System.out.printf("%.7f\n", 1.123456789123456789);

1.1234568

你要计算什么吗,看BigDecimal

//For example, divide by 1 and give a prevision of 7 digits
BigDecimal divide = bigDecimal.divide(BigDecimal.ONE, 7, RoundingMode.HALF_EVEN);
System.out.println(divide);

1.1234568

【讨论】:

@amit 为了避免精度问题,OP 应该只使用 BigDecimal。 :new BigDecimal("2.9");【参考方案2】:

printf 有这个功能

System.out.printf ("%.7f", floatNumber);

【讨论】:

【参考方案3】:

使用 DecimalFormat 格式化数字。

DecimalFormat df = new DecimalFormat("####0.000000");
String result = df.format(1.234);
System.out.println(result);

1.234000

快速参考链接

http://tutorials.jenkov.com/java-internationalization/decimalformat.html

http://examples.javacodegeeks.com/core-java/text/decimalformat/java-decimal-format-example/

【讨论】:

【参考方案4】:

String 类中有一个格式化方法。你可以使用它。

String number=String.format("%.7f", 1.234567777);

数字变量将获得所需的结果,即 (1.2345678)

【讨论】:

【参考方案5】:

第1步,创建DecimalFormat(例如小数点后7位的数字,如果小于7则用零替换)

DecimalFormat df = new DecimalFormat("0.#######");

第二步,设置取整模式(选择的模式只是一个例子,选择最适合自己的)

df.setRoundingMode(RoundingMode.HALF_UP);

第三步,格式化数字

String myNumber = df.format(1.234);

【讨论】:

以上是关于在java中将浮点数舍入到7位有效数字[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JS实现浮点数精确舍入小数点

带有浮点数的 Mod 给出错误的结果 [重复]

将浮点数舍入到 N 个小数位

将双精度数舍入到 x 有效数字

为啥 as_tibble() 将浮点数舍入到最接近的整数?

精度浮点型数据精确到了几位小数呢?