Buat angka menjadi persentase

104

Apa cara terbaik untuk menghapus angka "0" XXX% dan menjadikannya persentase? Apa yang terjadi jika nomor tersebut adalah int?

var number1 = 4.954848;
var number2 = 5.9797;

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

Jawaban:

199

Persentase hanyalah:

(number_one / number_two) * 100

Tidak perlu sesuatu yang mewah:

var number1 = 4.954848;
var number2 = 5.9797;

alert(Math.floor((number1 / number2) * 100)); //w00t!
Naftali alias Neal
sumber
47
untuk mempertahankan desimal persen: var pct = (num * 100) .toFixed (1) + "%";
efwjames
5
waspada (~~ ((number1 / number2) * 100)); karena Math.floor lebih lambat dari ~~ :)
nyxz
1
Kenapa Math.floor? Dan bukan Math.round? Bahkan dalam contoh Anda 4.954848 / 5.9797lebih dekat dengan 83%daripada ke 82%keluaran kode Anda.
gaazkam
9
@nyxz Ugg-- Anda menulis kode untuk manusia, bukan mesin. Kecuali jika Anda berada dalam lingkaran kritis super ketat, ~~jauh lebih sulit dibaca daripadaMath.floor
Jeremy J Starcher
5
Tidak ada alasan yang saya tahu. 83% dari semua persentase tetap dibuat
Naftali alias Neal
58
((portion/total) * 100).toFixed(2) + '%'
xtrem
sumber
36

Solusi terbaik, di mana enbahasa Inggris:

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

Liron Shapira
sumber
1
Waspadai support atau tidak pada smartphone .... Saat ini support belum begitu ideal.
jdehaan
(9.23) .toLocaleString ("en", {style: "percent"}) mengembalikan "923%", apakah ada cara untuk mengatasinya?
slorenzo
2
@slorenzo 9.23 sebenarnya 923%. Dengan asumsi Anda menginginkan 9,23%, Anda perlu membagi 9,23 dengan 100 dan kemudian mencoba konversinya.
Steve Hawkins
3
@slorenzo Untuk mendapatkan angka desimal juga, Anda dapat mencoba sesuatu seperti fraction.toLocaleString("en", { style: "percent", minimumFractionDigits: 2 })Lihat stackoverflow.com/a/29773435/411428
Manfred
16

Nah, jika Anda memiliki bilangan seperti 0.123456itu adalah hasil pembagian untuk memberikan persentase, kalikan dengan 100 lalu bulatkan atau gunakan toFixedseperti dalam contoh Anda.

Math.round(0.123456 * 100) //12

Berikut adalah plugin jQuery untuk melakukan itu:

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

Pemakaian:

alert($.percentage(6, 10));
Alex Turpin
sumber
15
Dimana jQuery.rounddan jQuery.dividedanjQuery.multiply
Raynos
2
@ Xeon06 hmmm OP sepertinya sudah berubah pikiran. aneh. jawaban saya tidak memiliki cukup jQuery di dalamnya.
Naftali alias Neal
2
@Raynos Saya telah memulai perkalian menggunakan loop dan putaran menggunakan manipulasi string tetapi saya menyerah pada pembagian.
Alex Turpin
2

Numeral.js adalah pustaka yang saya buat yang dapat memformat angka, mata uang, persentase, dan memiliki dukungan untuk pelokalan.

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

adamwdraper.dll
sumber
1
Komitmen terakhir untuk tanggal numeral.js27 Mar 2017. Entah perpustakaan tersebut sempurna (tidak ada cacat) atau tidak lagi aktif dipertahankan. Per 28 Jan 2019, proyek ini memiliki 135 masalah terbuka dengan yang tertua dari November 2012. Jumlah masalah terbuka tanpa komitmen dalam hampir 2 tahun menunjukkan bahwa proyek tidak lagi terpelihara. Senang diyakinkan sebaliknya.
Manfred
1

var persen = Math.floor (100 * number1 / number2 - 100) + '%';

Tomas Kubes
sumber
1

Sebagian besar jawaban menyarankan untuk menambahkan '%' di bagian akhir. Saya lebih suka Intl.NumberFormat()dengan{ 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);

StangSpree
sumber
0

@ xtrem Jawabannya bagus, tapi menurut saya toFixeddan makePercentageitu umum digunakan. Tentukan dua fungsi, dan kita dapat menggunakannya di mana saja.

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%​​​​​
Scott Ming
sumber
2
Meskipun cuplikan kode ini dapat menyelesaikan pertanyaan, menyertakan penjelasan sangat membantu meningkatkan kualitas posting Anda. Ingatlah bahwa Anda menjawab pertanyaan untuk pembaca di masa mendatang, dan orang-orang itu mungkin tidak tahu alasan saran kode Anda.
31piy