【问题标题】:Float to String Conversion - JS浮点数到字符串的转换 - JS
【发布时间】:2019-06-22 23:15:26
【问题描述】:

所以我目前正在研究该功能

const countSixes = n => {
  if (n === 0) return 0;
  else if (n === 1) return 1;
  else n = (countSixes(n-1) + countSixes(n-2)) / 2;

  return n;
}

所以我的问题是如何将最终的浮点值转换为字符串?

每次调用函数并尝试转换浮点数后,它都会返回 NaN


我的尝试

  1. "" + 值
  2. 字符串(值)
  3. value.toString()
  4. value.toFixed(2)

希望得到答案

谢谢!

【问题讨论】:

  • 您期望什么价值?请添加示例。
  • 我完全按照发布的方式复制了你的函数,在 chrome 控制台中运行它,并在调用结束时添加了一个 toString() 并得到一个字符串输出,你调用这个函数的值是什么?
  • 每个都应该工作,你能举一个更大的例子,解释你想要什么以及会发生什么吗?
  • 问题是你以递归方式使用它,所以你可能在函数调用中使用,所以你减去字符串?很难说,因为您没有展示如何将其转换为字符串。

标签: javascript algorithm floating-point type-conversion numbers


【解决方案1】:

第一个选项适合我

<script>
const countSixes = n => {
  if (n === 0) return 0;
  else if (n === 1) return 1;
  else n = (countSixes(n-1) + countSixes(n-2)) / 2;

  return n;
}

alert(countSixes(12) + "")
</script>

【讨论】:

    【解决方案2】:

    这个问题真的很有趣。它的return NaN 因为当您将n 作为String 返回时,function 被递归调用,因此它无法在下一级执行算术运算。
    对于某些数字,例如55

    ,它永远不会结束
    function countSixes(n,firstTime=true){
            if (n === 0) return 0;
            else if (n === 1) return 1;
            else n = (countSixes(n-1,false) + countSixes(n-2,false)) / 2;
            if(firstTime) return n.toFixed(10);    // return string
            else return parseFloat(n.toFixed(10));      // return float
        }
    

    【讨论】:

    • 我会将countSixes() 定义为入口,将countSixesHelper() 定义为递归部分。
    • 我也会这样做,但我很匆忙地发布了这个
    【解决方案3】:

    您可以将最终值转换为带有所需小数的字符串。

    const countSixes = n => {
        if (n === 0) return 0;
        if (n === 1) return 1;
        return (countSixes(n - 1) + countSixes(n - 2)) / 2;
    }
    
    console.log(countSixes(30).toFixed(15));

    【讨论】:

      猜你喜欢
      • 2013-10-03
      • 2016-06-14
      • 2011-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多