首页 > 编程知识 正文

剑指offer不适合java(java剑指offer)

时间:2023-05-04 04:06:00 阅读:89138 作者:2642

原文链接: https://MP.weixin.QQ.com/s/H2E Y2 BI 5K CTB C15 F9 M 9K毫克

今天来看看这个问题吧。 java是如何实现打开根的运算的? 众所周知,java、c、python等有直接的函数,但面试官在这个时候会亲手撕掉源代码。 这个时候该怎么办? 来吧,别慌。

如果一个数字正好能把根号加在两个整数上,例如1,4,9等,就很容易了。

如果一个数字不能正好给两个整数加根号,而且必须保持几个精度,例如2、3、5等,该怎么办?

首先,可以将这个数字分为整数部分和小数部分,分别进行计算。

例如,根据编号52.236,计算出整数部分为2后,可以通过留下几位数的精度来计算小数部分。 按顺序计算10分位、100分位、千分位等,将整数位设为10分位100分位千分位。 结果是我们期望的结果。

我来看代码

导入日本航空(import );

公共类测试6

publicstaticvoidmain (字符串[ ]数组) {

system.out.println (匹配项(5);

system.out.println (匹配方程(5,6 );

}

//需要开根号的数据

//应保持的精度,即小数位

公共建筑(英寸,英寸) {

双精度=新双精度;

if(m0) {2}

ARR=sc(m (米;

}

ints=sq(n;

企业资源(n,s,arr );

}

//*

* *计算保留多少位数的小数

* @param m

* * @返回

*/

公共静态双精度(intm ) {

双精度=新双精度;

整数=0;

wile (编号!=m ({2}

双f=1;

for (英制=0; I=数字; I ) {2}

f=f*10;

}

arr=1/f;

数字;

}

返回区域;

}

//*

* *整数位计算

* @param n

* * @返回

*/

公共卫生组织(Intn ) {

if(n==1) {

返回1;

}

int tmp=0;

for (英寸=1; i=n/2 1; I ) {2}

if(I*I==n ) {

tmp=i;

布莱克;

}

if(I*In ) {

tmp=i-1;

布莱克;

}

}

返回提示;

}

//*

开根号

* @param n

* @param j

* @param arr

* * @返回

*/

公共库存管理系统(英特尔、双向j、双向) {

双精度tmp=j;

for (输入=0; Parr .长度; p ) {2}

if(P0) {2}

j=tmp; //计算后的值(整数位数的小数点以后的和代入j,以下继续运算) ) ) ) ) ) )。

}

for (英寸=1; i=9; I ) ) /小数点后的位数只有9位(0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8和0.9 )。

tmp=I * arr;j; //i*arr[p]相当于每次加0.1,0.2 .

if(tmp*tmp==n ) {

返回提示;

}

if(tmp*tmpn ) {

//注意不要失去精度

bigdecimal C1=新bigdecimal (双精度.双精度) tmp );

bigdecimal C2=新bigdecimal (双精度.双精度) ARR[p] );

tmp=C1 .子轨迹(C2 ) .双精度值);

布莱克;

}

}

}

返回提示;

}

(} )。

继续说明想法。

小于2.3

把2.2记录在这里

小于2.24

记录2.23

就这样下去。

所以大家明白了吗?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。