有谁知道我如何像本网站上的示例那样将双精度值四舍五入为 3 位有效数字
http://www.purplemath.com/modules/rounding2.htm
原文由 mh377 发布,翻译遵循 CC BY-SA 4.0 许可协议
有谁知道我如何像本网站上的示例那样将双精度值四舍五入为 3 位有效数字
http://www.purplemath.com/modules/rounding2.htm
原文由 mh377 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果你想手工做:
import java.lang.Math;
public class SigDig {
public static void main(String[] args) {
System.out.println(" -123.456 rounded up to 2 sig figures is " + sigDigRounder(-123.456, 2, 1));
System.out.println(" -0.03394 rounded down to 3 sig figures is " + sigDigRounder(-0.03394, 3, -1));
System.out.println(" 474 rounded up to 2 sig figures is " + sigDigRounder(474, 2, 1));
System.out.println("3004001 rounded down to 4 sig figures is " + sigDigRounder(3004001, 4, -1));
}
public static double sigDigRounder(double value, int nSigDig, int dir) {
double intermediate = value/Math.pow(10,Math.floor(Math.log10(Math.abs(value)))-(nSigDig-1));
if(dir > 0) intermediate = Math.ceil(intermediate);
else if (dir< 0) intermediate = Math.floor(intermediate);
else intermediate = Math.round(intermediate);
double result = intermediate * Math.pow(10,Math.floor(Math.log10(Math.abs(value)))-(nSigDig-1));
return(result);
}
}
上面的方法将 double 舍入到所需的有效数字数,处理负数,并且可以明确地告诉向上或向下舍入
原文由 awwsmm 发布,翻译遵循 CC BY-SA 3.0 许可协议
4 回答1.1k 阅读✓ 已解决
4 回答729 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
2 回答661 阅读✓ 已解决
2 回答1.2k 阅读
2 回答1.6k 阅读