相关疑难解决方法(0)

浮点数学是否破碎?

请考虑以下代码:

0.1 + 0.2 == 0.3  ->  false
Run Code Online (Sandbox Code Playgroud)
0.1 + 0.2         ->  0.30000000000000004
Run Code Online (Sandbox Code Playgroud)

为什么会出现这些不准确之处?

language-agnostic math floating-point floating-accuracy

2798
推荐指数
28
解决办法
28万
查看次数

舍入到最多2位小数(仅在必要时)

我想最多舍入2位小数,但只在必要时.

输入:

10
1.7777777
9.1
Run Code Online (Sandbox Code Playgroud)

输出:

10
1.78
9.1
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做__CODE__

javascript decimal decimal-point rounding

2492
推荐指数
53
解决办法
220万
查看次数

Math.floor VS Math.trunc JavaScript

背景

我正在创建一个接收正数的函数,然后将数字四舍五入到它下面最接近的整数.

我一直在使用Math.floor,但最近我发现了Math.trunc.

我知道两者都将返回相同的值,给定一个正数,并且它们以完全不同的方式工作.我有兴趣探索这种行为.

问题

  1. 哪一个更快?
  2. 我应该使用哪一个?

javascript math performance

17
推荐指数
3
解决办法
8588
查看次数

数组(整数或十进制)到数组,数组到数字(整数或小数)而不使用字符串

需求:

将输入整数或十进制转换为数组,并将可能包含小数的整数数组转换为数字.

限制:

在过程中不要使用字符串方法或将输入或输出转换为字符串(在组成的每个版本的代码中都遵循自我限制).

上下文和用例

BigInt在某些浏览器中可用,但不是 BigDecimal.使用JavaScript编程语言可以实现从整数或十进制到数组和数组到整数或十进制的转换.在过程中,输入和输出不需要转换为字符串.

能够通过调整数组的第n个索引处的十进制或整数来调整整数或十进制的第n位,以尝试直接解决OEIS A217626,例如

~~(128.625*9*1.074)//1243
~~(128.625*9*1.144)//1324
Run Code Online (Sandbox Code Playgroud)

其中可以通过引用数组的索引来操作小数部分,然后将数组转换回数字.

当前规范是WIP,并且可能被认为难以描述与输入的小数部分的处理相关,特别是在存在前导零的情况下.

Input <----------> Output

-123               [-1,-2,-3]
4.4                [4,0.4]
44.44              [4,4,0.4,4]
-0.01              [-0.01]
123                [1,2,3]
200                [2,0,0]
2.718281828459     [2,0.7,1,8,2,8,1,8,2,8,4,5,8,9]
321.7000000001     [3,2,1,0.7,0,0,0,0,0,0,0,0,1]
809.56             [8,0,9,0.5,6]
1.61803398874989   [1,0.6,1,8,0,3,3,9,8,8,7,4,9,8,9]
1.999              [1,0.9,9,9]
100.01             [1,0,0,0.01]
545454.45          [5,4,5,4,5,4,0.4,5]
-7                 [-7]
-83.782            [-8,-3,-0.7,-8,-2]
1.5                [1,0.5]
100.0001           [1,0,0,0.0001]
Run Code Online (Sandbox Code Playgroud)

本质上,我试图将整数或小数传播到数组.将数字或整数转换为数组的函数必须能够转换为生成函数,才能实现

[...Math.E] -> [2, 0.7, 1, 8, 2, 8, 1, 8, 2, 8, 4, 5, 9] -> 2.718281828459
Run Code Online (Sandbox Code Playgroud)

通过将函数设置为Number.prototype[Symbol.iterator]to的值numberToArray …

javascript arrays integer decimal ecmascript-6

7
推荐指数
1
解决办法
531
查看次数

在JavaScript中检查数字的小数是否高于.5?

如何在JavaScript中检查数字的十进制值是否高于.5?

例如,我需要知道数字的小数点是在.5(更高)和.9(等于还是更低)之间.

一些示例数字:0.6,2.7,4.9.

javascript math numbers decimal

5
推荐指数
2
解决办法
5375
查看次数