将 javascript 中的长数字格式化为正确单位的最简单方法?
easiest way to format long numbers in javascript to the right unit?
我正在构建一个可以在网站上显示系统信息的网络应用程序。它显示“服务器”运行 所在的电脑的硬件信息(温度、内存、cpu、风扇速度等)。它打开一个 Web 服务器,显示可通过网络访问的此信息。我正在使用 meteor、blazejs 和 systeminformation ( https://github.com/sebhildebrandt/systeminformation ) 来执行此操作。系统信息显示它从服务器获取的信息为长数字。这是我的 html:
<template name="main">
{{#if subscriptionsReady}}
<p>cpu manufacturer: {{get (static) 'data.cpu.manufacturer'}}</p>
<p>cpu brand: {{get (static) 'data.cpu.brand'}}</p>
<p>cpu model: {{get (static) 'data.cpu.model'}}</p>
<p>cpu speed: {{get (static) 'data.cpu.speed'}}</p>
<p>cpu cores: {{get (static) 'data.cpu.cores'}}</p>
<p>total memory: {{get (dynamic) 'data.mem.total'}}</p>
<p>free memory: {{get (dynamic) 'data.mem.free'}}</p>
<p>used memory: {{get (dynamic) 'data.mem.used'}}</p>
<p>active memory: {{get (dynamic) 'data.mem.active'}}</p>
{{/if}}
网站上显示的
我想将长数字格式化为看起来像“总内存 X.yz GB”和类似的不同数据。有没有我可以使用的易于使用的库?
还有我的服务器javascript文件
Meteor.startup(() => {
si.getStaticData(Meteor.bindEnvironment(function(data){
Data.update({type: 'static'}, {data: data, type: 'static'}, {upsert: true})
}))
setInterval(Meteor.bindEnvironment(function() {
si.getDynamicData(Meteor.bindEnvironment(function(data){
Data.update({type: 'dynamic'}, {data: data, type: 'dynamic'}, {upsert: true})
}))
}), 1000)
Meteor.publish('data', function(){
return Data.find({})
})
});
和我的客户javascript
let subscriptions = [
Meteor.subscribe('data')
]
Template.main.helpers({
get: function(obj, what) {
console.log(obj)
return _.get(obj, what)
},
dynamic: function() {
return Data.findOne({type: 'dynamic'})
},
static: function() {
return Data.findOne({type: 'static'})
},
subscriptionsReady: function() {
for (let sub of subscriptions){
if (!sub.ready()) return false
}
return true
}
})
看看这个答案 - 这里有很多票
How to print a number with commas as thousands separators in JavaScript
tl;博士
function numberWithCommas(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
This is all you really need to know.
有非常流行的pretty-bytes库(MIT许可):
Convert bytes to a human readable string: 1337 → 1.34 kB
Useful for displaying file sizes for humans.
用法:
const prettyBytes = require('pretty-bytes');
prettyBytes(1337);
//=> '1.34 kB'
prettyBytes(100);
//=> '100 B'
请注意,它以 10 为基数进行转换(即 1 GB = 1,000,000,000 B,就像存储制造商通常使用的那样)。
我猜你指的是 RAM 内存,我认为 制造商使用 base 2 转换报告(即 1 GiB = 1,024 * 1,024 * 1,024 B),你可能会对另一个流行的库感兴趣:filesize(BSD 3 条款许可)
我正在构建一个可以在网站上显示系统信息的网络应用程序。它显示“服务器”运行 所在的电脑的硬件信息(温度、内存、cpu、风扇速度等)。它打开一个 Web 服务器,显示可通过网络访问的此信息。我正在使用 meteor、blazejs 和 systeminformation ( https://github.com/sebhildebrandt/systeminformation ) 来执行此操作。系统信息显示它从服务器获取的信息为长数字。这是我的 html:
<template name="main">
{{#if subscriptionsReady}}
<p>cpu manufacturer: {{get (static) 'data.cpu.manufacturer'}}</p>
<p>cpu brand: {{get (static) 'data.cpu.brand'}}</p>
<p>cpu model: {{get (static) 'data.cpu.model'}}</p>
<p>cpu speed: {{get (static) 'data.cpu.speed'}}</p>
<p>cpu cores: {{get (static) 'data.cpu.cores'}}</p>
<p>total memory: {{get (dynamic) 'data.mem.total'}}</p>
<p>free memory: {{get (dynamic) 'data.mem.free'}}</p>
<p>used memory: {{get (dynamic) 'data.mem.used'}}</p>
<p>active memory: {{get (dynamic) 'data.mem.active'}}</p>
{{/if}}
网站上显示的
我想将长数字格式化为看起来像“总内存 X.yz GB”和类似的不同数据。有没有我可以使用的易于使用的库?
还有我的服务器javascript文件
Meteor.startup(() => {
si.getStaticData(Meteor.bindEnvironment(function(data){
Data.update({type: 'static'}, {data: data, type: 'static'}, {upsert: true})
}))
setInterval(Meteor.bindEnvironment(function() {
si.getDynamicData(Meteor.bindEnvironment(function(data){
Data.update({type: 'dynamic'}, {data: data, type: 'dynamic'}, {upsert: true})
}))
}), 1000)
Meteor.publish('data', function(){
return Data.find({})
})
});
和我的客户javascript
let subscriptions = [
Meteor.subscribe('data')
]
Template.main.helpers({
get: function(obj, what) {
console.log(obj)
return _.get(obj, what)
},
dynamic: function() {
return Data.findOne({type: 'dynamic'})
},
static: function() {
return Data.findOne({type: 'static'})
},
subscriptionsReady: function() {
for (let sub of subscriptions){
if (!sub.ready()) return false
}
return true
}
})
看看这个答案 - 这里有很多票
How to print a number with commas as thousands separators in JavaScript
tl;博士
function numberWithCommas(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
This is all you really need to know.
有非常流行的pretty-bytes库(MIT许可):
Convert bytes to a human readable string: 1337 → 1.34 kB
Useful for displaying file sizes for humans.
用法:
const prettyBytes = require('pretty-bytes');
prettyBytes(1337);
//=> '1.34 kB'
prettyBytes(100);
//=> '100 B'
请注意,它以 10 为基数进行转换(即 1 GB = 1,000,000,000 B,就像存储制造商通常使用的那样)。
我猜你指的是 RAM 内存,我认为 制造商使用 base 2 转换报告(即 1 GiB = 1,024 * 1,024 * 1,024 B),你可能会对另一个流行的库感兴趣:filesize(BSD 3 条款许可)