javascript在我的计算中不起作用

javascript在我的计算中不起作用,javascript,Javascript,大家好,我有个字节说007458415820874584158280423283712。我想把它转换成GB,所以试着用1048576除以它,我得到的结果是7.112899609446129e+27。我只需要小数点后的两个数字,所以我使用了.toFixed,如下所示。它不起作用,我得到的响应与我没有使用toFixed函数时一样。我只希望结果是7.1。帮我解决这个问题 console.log((007458415820874584158280423283712/1048576).toFixed(2

大家好,我有个字节说
007458415820874584158280423283712
。我想把它转换成GB,所以试着用
1048576
除以它,我得到的结果是
7.112899609446129e+27
。我只需要小数点后的两个数字,所以我使用了.toFixed,如下所示。它不起作用,我得到的响应与我没有使用toFixed函数时一样。我只希望结果是7.1。帮我解决这个问题


console.log((007458415820874584158280423283712/1048576).toFixed(2))您的问题是这是科学记数法,
toFixed()
支持20位小数。您的号码是
7.112899609446129e+27
,从技术上讲(很可能)有小数点,但由于科学记数法的原因,它们不可见

解决方案是使用
toExponential()
如下:

parseFloat((7458415820874584158208042423283712/1048576.0).toExponential(2))
输出:
7.11e+27

此处显示了更正确的方法:

但这就给了
“7.11e+27”
(一个字符串)

如果您只需要
7.11
,则可以使用
slice(0,3)
,如下所示:

var result_str = (7458415820874584158208042423283712/1048576).toExponential(2);
console.log(parseFloat(result_str.slice(0,3)));

结果:
7.1

您的问题是这是科学记数法,
toFixed()
支持20位小数。您的号码是
7.112899609446129e+27
,从技术上讲(很可能)有小数点,但由于科学记数法的原因,它们不可见

解决方案是使用
toExponential()
如下:

parseFloat((7458415820874584158208042423283712/1048576.0).toExponential(2))
输出:
7.11e+27

此处显示了更正确的方法:

但这就给了
“7.11e+27”
(一个字符串)

如果您只需要
7.11
,则可以使用
slice(0,3)
,如下所示:

var result_str = (7458415820874584158208042423283712/1048576).toExponential(2);
console.log(parseFloat(result_str.slice(0,3)));

结果:
7.1

您可以将此原型功能用于解决方案

Number.prototype.tofixedsspecial=函数(n){
var str=此.toFixed(n);
如果(str.indexOf('e+')=-1)
返回str;
//若数字采用科学记数法,则选择(b)ase和(p)ower
str=str.replace('.','').split('e+').reduce(函数(p,b){
返回p+数组(b-p.length+2).join(0);
});
如果(n>0)
str+='.'+数组(n+1).join(0);
返回str;
};
var val=(0074584158208745841582042423283712/1048576);
控制台日志(val);
console.log(val.tofixedsspecial(2))/“7112899609446129000000000000000000.00”
console.log(1e21.toFixedSpecial(2));//"1000000000000000000000.00"
console.log(2.1e24.toFixedSpecial(0));//"2100000000000000000000000"
console.log(1234567..toFixedSpecial(1));//"1234567.0"

console.log(1234567.89.tofixedsspecial(3));//“1234567.890”
您可以将此原型函数用于解决方案

Number.prototype.tofixedsspecial=函数(n){
var str=此.toFixed(n);
如果(str.indexOf('e+')=-1)
返回str;
//若数字采用科学记数法,则选择(b)ase和(p)ower
str=str.replace('.','').split('e+').reduce(函数(p,b){
返回p+数组(b-p.length+2).join(0);
});
如果(n>0)
str+='.'+数组(n+1).join(0);
返回str;
};
var val=(0074584158208745841582042423283712/1048576);
控制台日志(val);
console.log(val.tofixedsspecial(2))/“7112899609446129000000000000000000.00”
console.log(1e21.toFixedSpecial(2));//"1000000000000000000000.00"
console.log(2.1e24.toFixedSpecial(0));//"2100000000000000000000000"
console.log(1234567..toFixedSpecial(1));//"1234567.0"

console.log(1234567.89.tofixedsspecial(3));//“1234567.890”
当然不是:
toFixed
用于控制小数点后的位数。7.112899609446129e+27中没有“小数点”,“e+27”表示“乘以10000000000000000000”。您显示的数字是7-27-0千兆字节。那么,你到底需要什么?因为一个以零开头的数字,就像你所展示的,表明这实际上不是你需要做的事情,而是你编造出来的——你能描述一下实际的用例吗?这回答了你的问题吗。?这个数字是
6024860个青铜字节
6946191024849735347747842
Gigabytes-这是很多。。。全球总存储量估计为295 EB。。。或295000000000千兆字节。。。因此,您的数字比当前存在的总估计数据大20432倍(我可能超出了几个数量级,我仍然在嘲笑brontobytes:p)当然不是:
toFixed
用于控制小数点后的位数。7.112899609446129e+27中没有“小数点”,“e+27”表示“乘以10000000000000000000”。您显示的数字是7-27-0千兆字节。那么,你到底需要什么?因为一个以零开头的数字,就像你所展示的,表明这实际上不是你需要做的事情,而是你编造出来的——你能描述一下实际的用例吗?这回答了你的问题吗。?这个数字是
6024860个青铜字节
6946191024849735347747842
Gigabytes-这是很多。。。全球总存储量估计为295 EB。。。或295000000000千兆字节。。。因此,您的数字是目前存在的总估计数据的20432倍(我可能会被数个数量级的数据淘汰,我仍然在嘲笑brontobytes:p)