数値をパーセンテージにする


104

数値から「0.」XXX%を取り除いてパーセントにするための最良の方法は何ですか?数値がintの場合はどうなりますか?

var number1 = 4.954848;
var number2 = 5.9797;

$(document).ready(function() {    
    final = number1/number2;
    alert(final.toFixed(2) + "%");
});

回答:


199

割合は次のとおりです。

(number_one / number_two) * 100

特別なものは何も必要ありません。

var number1 = 4.954848;
var number2 = 5.9797;

alert(Math.floor((number1 / number2) * 100)); //w00t!

47
pctを10進数に保つには:var pct =(num * 100).toFixed(1)+ "%";
efwjames

5
alert(~~((number1 / number2)* 100)); Math.floorは~~より遅いので:)
nyxz

1
なんでMath.floor?じゃないMath.round?あなたの例でさえ、あなたのコード出力より4.954848 / 5.9797近いです。83%82%
gaazkam

9
@nyxz Ugg--機械ではなく人間向けのコードを記述します。あなたには、いくつかの超タイトなクリティカルなループである場合を除き、~~非常に読みにくくよりMath.floor
ジェレミー・J Starcher

5
私が知っている理由はありません。とにかく、すべてのパーセンテージの83%が
補わ


36

最良の解決策enは、英語のロケールです。

fraction.toLocaleString("en", {style: "percent"})


1
スマートフォンでのサポートに注意してください...現在、サポートはそれほど理想的ではありません。
jdehaan 2018年

(9.23).toLocaleString( "en"、{style: "percent"})は "923%"を返します。それを解決する方法はありますか?
slorenzo 2018年

2
@slorenzo 9.23は実際には923%です。9.23%が必要だとすると、9.23を100で割り、変換を試す必要があります。
スティーブホーキンス

3
@slorenzo 10進数も取得するには、fraction.toLocaleString("en", { style: "percent", minimumFractionDigits: 2 })see stackoverflow.com/a/29773435/411428
Manfred

16

まあ、もしあなたがそのような数を0.123456パーセンテージを与えるための除算の結果であるなら、それを100で掛けて、それからそれを丸めるかtoFixed、あなたの例のように使ってください。

Math.round(0.123456 * 100) //12

これを行うためのjQueryプラグインを次に示します。

jQuery.extend({
    percentage: function(a, b) {
        return Math.round((a / b) * 100);
    }
});

使用法:

alert($.percentage(6, 10));

15
どこでjQuery.roundjQuery.divideそしてjQuery.multiply
レイノス

2
@ Xeon06ふむふむ、OPは気が変わったようです。変。私の答えに十分なjQuery がありませんでした。
Naftali別名Neal

2
@Raynosループを使用した乗算と文字列操作を使用したラウンドを開始しましたが、除算をあきらめました。
Alex Turpin

2

Numeral.jsは私が作成したライブラリで、数値、通貨、パーセンテージをフォーマットでき、ローカリゼーションをサポートしています。

numeral(0.7523).format('0%') // returns string "75%"


1
の最後のコミットはnumeral.js2017年3月27日でした。ライブラリは完全(欠陥なし)であるか、または積極的に保守されていません。2019年1月28日の時点で、このプロジェクトには135の未解決の問題があり、最も古いものは2012年11月のものです。約2年間にコミットされていない未解決の問題の数は、プロジェクトの世話がなくなったことを示しています。そうでなければ納得して幸せです。
Manfred


1

ほとんどの回答は、末尾に「%」を追加することを推奨しています。私はむしろ好むだろうIntl.NumberFormat(){ style: 'percent'}

var num = 25;

var option = {
  style: 'percent'

};
var formatter = new Intl.NumberFormat("en-US", option);
var percentFormat = formatter.format(num / 100);
console.log(percentFormat);


0

@xtremの答えは良いですが、toFixedmakePercentageは一般的な使用法だと思います。2つの関数を定義すると、どこでもそれを使用できます。

const R = require('ramda')
const RA = require('ramda-adjunct')

const fix = R.invoker(1, 'toFixed')(2)

const makePercentage = R.when(
  RA.isNotNil,
  R.compose(R.flip(R.concat)('%'), fix, R.multiply(100)),
)

let a = 0.9988
let b = null

makePercentage(b) // -> null
makePercentage(a) // -> ​​​​​99.88%​​​​​

2
このコードスニペットは問題を解決する可能性がありますが、説明を含めると、投稿の品質を向上させるのに役立ちます。あなたは将来の読者のための質問に答えていることを覚えておいてください、そしてそれらの人々はあなたのコード提案の理由を知らないかもしれません。
31piy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.