使用SI前缀格式化具有固定小数位数的数字 [英] Format a number with SI Prefix, with fixed number of decimals

查看:293
本文介绍了使用SI前缀格式化具有固定小数位数的数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在查找d3.format的可用类型

I'm looking over the available type for d3.format


可用的类型值有:

The available type values are:

exponent(e) - 使用Number.toExponential。

exponent ("e") - use Number.toExponential.

general(g) - 使用Number.toPrecision。

general ("g") - use Number.toPrecision.

固定(f) - 使用Number.toFixed。

fixed ("f") - use Number.toFixed.

integer(d) - 使用Number.toString,但忽略任何非整数值。

integer ("d") - use Number.toString, but ignore any non-integer values.

舍入(r) - 如固定,但舍入为精确有效数字。

rounded ("r") - like fixed, but round to precision significant digits.

百分比(%) - 如固定,但乘以100,后缀为%。

percentage ("%") - like fixed, but multiply by 100 and suffix with "%".

舍入百分比(p) - 例如四舍五入,但乘以100,后缀为%。

rounded percentage ("p") - like rounded, but multiply by 100 and suffix with "%".

SI前缀(s) - 如舍入,但带有单位后缀,例如9.5M 。

SI-prefix ("s") - like rounded, but with a unit suffixed such as "9.5M" or "1.00µ".

https://github.com/mbostock/d3/wiki/Formatting#wiki-d3_format

我想要的是SI -prefix就像固定不舍入这样的格式选项存在吗?

What I would like is an SI-prefix that is like fixed not rounded does such a format option exist?

一些例子:

var format = d3.format('.1s');
format(12600000); // Would like 12.6M get 10M
format(12400000); // Would like 12.4M get 10M
format(1240000); // Would like 1.2M get 1M
format(1290000); // Would like 1.3M get 1M


推荐答案

对的。使用 d3.formatPrefix() 一可以得到SI前缀。要获取不带小数的舍入数,我使用 JavaScript的 .toFixed()

You almost got it right. Using d3.formatPrefix() one can get the SI prefix. To get the rounded number without decimals, I used Javascript's .toFixed():

var prefix = d3.formatPrefix(137594020);
console.log(prefix.symbol); // "M"
console.log(prefix.scale(137594020).toFixed()); // 138

var prefix = d3.formatPrefix(13759402);
console.log(prefix.symbol); // "M"
console.log(prefix.scale(13759402).toFixed()); // 14

var prefix = d3.formatPrefix(1375);
console.log(prefix.symbol); // "k"
console.log(prefix.scale(1375).toFixed()); // 1

您可以在 jsfiddle

这篇关于使用SI前缀格式化具有固定小数位数的数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆