สร้างตัวเลขเป็นเปอร์เซ็นต์


106

วิธีใดที่ดีที่สุดในการตัด "0. " ออกจากตัวเลข XXX% และทำให้เป็นเปอร์เซ็นต์ จะเกิดอะไรขึ้นถ้าตัวเลขเป็น int?

var number1 = 4.954848;
var number2 = 5.9797;

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

คำตอบ:


202

เปอร์เซ็นต์เป็นเพียง:

(number_one / number_two) * 100

ไม่จำเป็นต้องมีอะไรแฟนซี:

var number1 = 4.954848;
var number2 = 5.9797;

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

47
เพื่อให้ pct decimal: var pct = (num * 100) .toFixed (1) + "%";
efwjames

5
การแจ้งเตือน (~~ ((หมายเลข 1 / หมายเลข 2) * 100)); เนื่องจาก Math.floor ช้ากว่า ~~ :)
nyxz

1
ทำไมMath.floor? และไม่Math.round? แม้จะอยู่ในตัวอย่างของคุณ4.954848 / 5.9797อยู่ใกล้83%กว่าที่จะ82%เอาท์พุทรหัสของคุณ
gaazkam

9
@nyxz Ugg - คุณเขียนโค้ดสำหรับมนุษย์ไม่ใช่เครื่องจักร เว้นแต่ว่าคุณจะอยู่ในลูปวิกฤตที่คับขัน แต่~~ก็อ่านได้น้อยกว่าMath.floor
Jeremy J Starcher

5
ไม่มีเหตุผลที่ฉันรู้ 83% ของเปอร์เซ็นต์ทั้งหมดถูกสร้างขึ้นอย่างไรก็ตาม
Naftali aka Neal


36

ทางออกที่ดีที่สุดenภาษาอังกฤษอยู่ที่ไหน:

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


1
ระวังสำหรับการสนับสนุนหรือไม่บนสมาร์ทโฟน .... ปัจจุบันการสนับสนุนไม่เหมาะอย่างนั้น
jdehaan

(9.23) .toLocaleString ("en", {style: "percent"}) คืนค่า "923%" มีวิธีแก้ไหม
slorenzo

2
@slorenzo 9.23 จริงๆแล้ว 923% สมมติว่าคุณต้องการ 9.23% คุณจะต้องหาร 9.23 ด้วย 100 แล้วลองแปลง
Steve Hawkins

3
@slorenzo หากต้องการรับตัวเลขทศนิยมคุณสามารถลองบางอย่างเช่นfraction.toLocaleString("en", { style: "percent", minimumFractionDigits: 2 })ดู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.roundและjQuery.divideและjQuery.multiply
Raynos

2
@ Xeon06 อืมดูเหมือน OP จะเปลี่ยนใจแล้ว แปลก. คำตอบของฉันมี jQuery ไม่เพียงพอ
Naftali aka Neal

2
@Raynos ฉันเริ่มคูณโดยใช้ลูปและรอบโดยใช้การจัดการสตริง แต่ฉันยอมแพ้ในการหาร
Alex Turpin

2

Numeral.jsเป็นไลบรารีที่ฉันสร้างขึ้นซึ่งสามารถจัดรูปแบบตัวเลขสกุลเงินเปอร์เซ็นต์และรองรับการแปล

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


1
การคอมมิตครั้งสุดท้ายnumeral.jsคือ 27 มีนาคม 2017 ทั้งห้องสมุดสมบูรณ์ (ไม่มีข้อบกพร่อง) หรือไม่มีการบำรุงรักษาอีกต่อไป ณ วันที่ 28 มกราคม 2019 โครงการมีปัญหาที่เปิดอยู่ 135 ฉบับซึ่งเก่าแก่ที่สุดตั้งแต่เดือนพฤศจิกายน 2555 จำนวนปัญหาที่เปิดอยู่โดยไม่มีข้อผูกมัดในรอบเกือบ 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 เป็นสิ่งที่ดี แต่ผมคิดว่าtoFixedและmakePercentageมีการใช้งานทั่วไป กำหนดฟังก์ชันสองอย่างและเราสามารถใช้งานได้ทุกที่

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.