【问题标题】:convert float into integer without using javascript function, ciel(), floor()将浮点数转换为整数而不使用 javascript 函数,ciel(),floor()
【发布时间】:2021-09-02 13:49:49
【问题描述】:

我想在不使用 ceil()、floor() 等 JavaScript 函数的情况下将浮点数转换为整数

 let a = 5.7
        console.log(Math.ceil(a)); console.log(Math.floor(2.3))

【问题讨论】:

  • 所以你基本上是想重写ceilfloor?
  • 为什么? Math.ceil()Math.floor() 有什么问题?
  • 你是想像 ceil 那样四舍五入(所以 5.7 会给出 6,但 5.0001 也会给出 6)还是实际四舍五入(到最接近的 0.5)或 ....?跨度>
  • 如果您查看 JS 如何存储数字,您会发现它完全使用 64 位。您可以通过 JS 位运算获得一些方法。例如,请参阅@Spectric 的答案,它可以让您达到一定大小。出于许多实际目的,这将是可以的,但是由于按位运算使用 32 位,因此您会丢失部分范围,并且指数部分会完全丢失。您对数字大小有什么限制?
  • 您可以查看toFixed,例如:(5.7).toFixed(0); // 6

标签: javascript function reverse


【解决方案1】:

您可以使用bitwise NOT 运算符:

let a = 5.7;
let result = ~~a;
console.log(result)

【讨论】:

  • 是的,我也用过这个运算符。请检查答案。
  • 感谢您的时间,@Spectric 先生
【解决方案2】:

不使用javascript内置函数

 let a = 5.7
        console.log(Math.ceil(a)); console.log(Math.floor(2.3))

我们可以使用简单的运算符将浮点数转换为整数。

let n = 12345;
  
let a = n % 10;
n = n / 10;
n = ~~n;
let b = n % 10;
n = n / 10;
n = ~~n;
let c = n % 10;
n = n / 10;
n = ~~n;
d = n % 10;
n = n / 10;
n = ~~n

console.log(a, b, c, d, n);

【讨论】:

  • 只是为了方便他人使用,您能否在答案中分享控制台日志输出?
  • 为什么会有一个空循环?所有这些重复操作是怎么回事?为什么需要登录5 4 3 2 1.ceil() 的等价物是什么? .floor() 相当于什么?
  • 我认为你不理解这个例子。 n=12345。这只是一个示例,显示了按位 Not 运算符的使用。循环放错了,我删除了。
  • 为了让你的答案更清楚,你可以解释~~的行为与floor相同,例如~~5.1~~5.9都给出5。照原样,很难理解您要展示的内容,以及它是否模仿ceilfloor,因为您的问题说明了两者。但无论如何,尽可能使用Math.floor,它会让你的代码不那么神秘:)
猜你喜欢
  • 2021-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-02
  • 1970-01-01
相关资源
最近更新 更多