13

d3.formatで利用可能なタイプを探しています

使用可能なタイプ値は次のとおりです。

exponent( "e")-Number.toExponentialを使用します。

一般( "g")-Number.toPrecisionを使用します。

修正済み( "f")-Number.toFixedを使用します。

integer( "d")-Number.toStringを使用しますが、整数以外の値は無視します。

丸め( "r")-固定のようですが、有効数字の精度に丸められます。

パーセンテージ( "%")-固定のようですが、100を掛け、接尾辞に "%"を付けます。

丸められたパーセンテージ( "p")-丸められたようですが、100を掛け、接尾辞に "%"を付けます。

SIプレフィックス( "s")-丸められたようですが、「9.5M」や「1.00µ」などの接尾辞が付いた単位が付いています。

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

私が欲しいのは、丸められていない固定のようなSIプレフィックスです。そのようなフォーマットオプションは存在しますか?

いくつかの例:

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
4

2 に答える 2

11

あなたはほとんどそれを正しくしました。1つを使用d3.formatPrefix()すると、SIプレフィックスを取得できます。小数点なしの丸められた数値を取得するために、Javascriptの.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で自分で試すことができます。

于 2013-02-18T18:05:32.843 に答える
1

あなたはあなたのを変更する必要があるだけです

d3.format('.1s');

d3.format('.3s');

console.log(d3.format(".3s")(12600000));
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

于 2016-06-22T00:17:45.127 に答える