在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位有效数字[重复]的主要内容,如果未能解决你的问题,请参考以下文章