math.trunc() 返回带小数的值

Posted

技术标签:

【中文标题】math.trunc() 返回带小数的值【英文标题】:math.trunc() returning values with decimals 【发布时间】: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 年我的坏。真/假位只是为了我的可读性,还是新的!感谢朋友的帮助 【参考方案1】:

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

【讨论】:

以上是关于math.trunc() 返回带小数的值的主要内容,如果未能解决你的问题,请参考以下文章

ES6之 number 和 string

JavaScript四种数值取整方法

VUE字符串截取,数字截取

带小数的 PHP 和单元测试断言

ES6 之 Math对象的扩展

解析带小数点的值[重复]