我在刷题时要求我在输出时按6位有效数输出,当时我也不会于是我在CSDN上搜索结果没找到有用的答案在浏览器上搜索就搜到了,废话不在说了,开始实现,希望能解决一些人的需求。
首先我要介绍一些java的数学函数
Math.ceil(x);//浮点数x向上取整
Math.log10(x);//10的多少次方等于x
Math.pow(x,y);//x的y次方
Math.round(x);//对x四舍五入
log10(x)不论输入的是整数还是浮点数输出的结果在放入Math.ceil()中求出的就为x的整数位的个数,我以代码的形式来演示。
接下来在用要求有效数的位数n 减去整数位数就得到保留小数的位数,再将要保留的有效数全转换成整数,四舍五入后转化为小数。
现在将所需功能写成方法
public static double get(double num, int n) {
if(num == 0) {
return 0;
}
double d = Math.ceil(Math.log10(num < 0 ? -num: num));//穿过来的可能为负数
int power = n - (int) d;
double wei = Math.pow(10, power);
long shifted = Math.round(num*wei);
return shifted/wei;
}
我的这崴脚的英语🤣🤣🤣
如果要求6位有效数字调用方法get(x,6);就行了,到这就结束了,快去试试吧。