在 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 中查找指数的最后六位数字?的主要内容,如果未能解决你的问题,请参考以下文章