题解 | #求解立方根#

求解立方根

https://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca

按道理这是一道中等题,但因为版本细节问题,如2.15.toFixed(1)==2.1这种细节错误,导致一直无法通过,修改之后将完整代码放在下面,仅供参考
//获取输入流,并将输入流转换为浮点数。
let n = parseFloat(readline());
//因题中说明提供的实数小于20,故可将0.01-3.00的实数全部列出(3的立方为27,所以该数列范围已经包含所有可能的立方根答案);
let arrOnes = [...Array(301).keys()].slice(1).map(x => parseFloat((x/100).toFixed(2)));
let result = [];
//for循环,新建result数组,将每次的[arrOnes[i], root]push进入数组;
for (let i = 0; i < arrOnes.length; i++) {
    let root = Math.pow(arrOnes[i], 3);
    result.push([arrOnes[i], root]);
}
//根据数组中立方值与输入实数的差值绝对值来从小到大排序,最后第一个即为实数立方根;
result.sort((a, b) => Math.abs((a[1]) - Math.abs(n)) - Math.abs((b[1]) - Math.abs(n)));
//console.log(result);
let output = 0;
//再考虑正负数的情况,如大于0,则直接输出(注意这里用的是Math.round而不是.toFixed, 乘以10再除以10,因为有些情况比如开头提到的2.15.toFixed(1)==2.1这种错误会导致最后无法通过);
//如是负数,则再乘以-1再输出;
if ( n > 0) {
    output = Math.round(result[0][0]*10)/10;
    console.log(output);
}
else {
    output = Math.round(result[0][0]*10)/10;
    console.log(output*(-1));
}


全部评论

相关推荐

09-16 14:01
井冈山大学 Java
肖先生~:兄弟们,我发的她都点赞了,但是就是不给我微信
秋招被确诊为……
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务