在 Javascript 中查找指数的最后六位数字?

Posted

技术标签:

【中文标题】在 Javascript 中查找指数的最后六位数字?【英文标题】:Finding last six digits of an exponential number in Javascript? 【发布时间】:2018-01-08 14:41:42 【问题描述】:

我有一个数字,假设我有三个数字

const num1 = 21; // output: 21
const num2 = 12345678; // output: 345678
const num3 = 1.359801885649216e+34; // output: ?? (probably 000000)

应该指出我真的不知道e+ 做了什么

我需要找到这些数字的最后六位数字(或可用金额)。

如何在 javascript 中找到这些数字的最后六位数字?

【问题讨论】:

它们是零。或者你想要'16e+34'。请更具体一点。 小数点前最后6位? 我将问题更新为更具体。 @FedericoklezCulloca 不够具体。在浮点数学中,1.359801885649216e+34大约等于 13598018856492160000000000000000000,但不完全是,因为 64 位双精度实际上不能保存该特定值。 如果是整数,只需执行n % 1000000。如果是您未指定的小数。 【参考方案1】:

您可以使用 1e6 的其余部分,但您只能得到最接近的浮点数值,正如 Alnitak 在 cmets 中指出的那样。

对于最后一种情况,数字

13598018856492160349090412205441024

被占用,最后 6 位数字是

                             441024

console.log([21, 12345678, 1.359801885649216e+34].map(v => v % 1e6));

【讨论】:

【参考方案2】:

我需要找到任何一个的最后六位数字(或可用金额) 这些数字。

我假设您的意思是 - 小数点前最后 6 位数字

以最大精度使用toPrecision 100

num = 1.359801885649216e+34;
var fnLastNDigits = ( num, N ) => num.toPrecision( 100 ).split( "." )[ 0 ].slice( -N );

console.log( fnLastNDigits( num )  );

说明

num.toPrecision( 100 ) 返回给定精度的字符串值 split( "." )[0] 将值除以. 并返回数组的第一个值 slice(-N) 获取最后 N 位

【讨论】:

以上是关于在 Javascript 中查找指数的最后六位数字?的主要内容,如果未能解决你的问题,请参考以下文章

根据for循环的索引查找小数指数

格式化输出

使用指数的javascript数字文字

Linux系统优化及基础命令

如何在Javascript中找到指数的值[关闭]

如何在 Ruby 中生成唯一的六位字母数字代码