【问题标题】:math.trunc() returning values with decimalsmath.trunc() 返回带小数的值
【发布时间】:2021-12-20 22:44:40
【问题描述】:

任务

第一世纪从 1 年到 100 年,包括 100 年,第二个世纪 - 从 101 年到 200 年,以此类推。

给定一年,返回它所在的世纪。但是,对于 else if 块,它返回19.64,而不是20。这条线有什么问题?

const onCenturyCrossover = function (year) {
  return year % 2 === 0;
};

const century = function (year) {
  if (onCenturyCrossover(year) === true) {
    return year / 100;
  } else if (onCenturyCrossover(year) === false) {
    return Math.trunc(year / 100) + 1;
  }
};
console.log(century(2000));
console.log(century(1964));

【问题讨论】:

  • 是什么让可被 2 整除的年份成为“世纪交叉”?
  • 具体来说:1964 可以被 2 整除,所以 onCenturyCrossover() 将返回 true。因此,1964 / 100 没有应用任何.trunc() 将是19.64
  • 也不要像这样明确比较truefalse。您的函数只需要调用一次;如果结果不是true',那么它必须是falseif 语句已经知道如何使用布尔值,因此不需要显式比较。
  • 啊,是的。所有必须改变的只是从第 2 年到第 100 年我的坏。真/假位只是为了我的可读性,还是新的!感谢朋友的帮助

标签: javascript algorithm function truncate


【解决方案1】:

const Century = year => Math.floor(year/100) + 1;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 2016-12-06
    • 2022-12-05
    相关资源
    最近更新 更多