【中等】算法nodeJs:求解立方根

71 阅读1分钟

描述

计算一个浮点数的立方根,不使用库函数。

保留一位小数。

数据范围:∣val∣≤20 

输入描述:

待求解参数,为double类型(一个实数)

输出描述:

输出参数的立方根。保留一位小数。

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    while ((line = await readline())) {
        let tokens = Number(line);
        let input = Math.abs(tokens); // 转换成正数来计算
        let val = 0; // 当前的根值的立方
        let preValue = 0; // 上一个根植的立方
        let result = 0; // 根植
        while (val < input) {
            result += 0.1;
            preValue = val;
            val = result * result * result;
        }

        if (Math.abs(preValue - input) < Math.abs(val - input)) {
            result -= 0.1;
        }
        console.log(Number(result * (tokens > 0 ? 1 : -1)).toFixed(1)); // 转成一位小数和恢复正负
    }
})();