以百分比表示


104

去除数字中的“ 0.” XXX%并使其成为百分比的最佳方法是什么?如果数字恰好是整数,会发生什么?

var number1 = 4.954848;
var number2 = 5.9797;

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

Answers:


199

一个百分比就是:

(number_one / number_two) * 100

不需要任何花哨的东西:

var number1 = 4.954848;
var number2 = 5.9797;

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

47
保留pct十进制:var pct =(num * 100).toFixed(1)+“%”;
efwjames 2012年

5
alert(~~((数字1 /数字2 * 100)); 因为Math.floor比~~慢:)
nyxz

1
为什么Math.floor呢 不是Math.round吗?即使在您的示例中,4.954848 / 5.9797它也83%82%代码输出更接近。
gaazkam'17年

9
@nyxz Ugg-您为人类而不是机器编写代码。除非您处在一个非常严密的临界循环中,否则它的~~可读性就不如Math.floor
Jeremy J Starcher,

5
我没有理由知道。无论如何,所有百分比的83%都是补全的
纳夫塔利(Naftali)又称尼尔(Neal),


35

最佳解决方案en是英语语言环境:

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


1
要当心支持或不支持智能手机。...目前,支持还不是那么理想。
jdehaan '18

(9.23).toLocaleString(“ en”,{style:“ percent”})返回“ 923%”,有没有办法解决?
slorenzo

2
@slorenzo 9.23实际上是923%。假设您想要9.23%,则需要将9.23除以100,然后尝试进行转换。
史蒂夫·霍金斯

2
@slorenzo要获得十进制数字,也可以尝试使用类似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.dividejQuery.multiply
Raynos

2
@ Xeon06 hmmm OP似乎已经改变了主意。奇怪的。我的答案没有足够的jQuery。
Naftali又名Neal,

2
@Raynos我已经开始使用循环进行乘法运算,并使用字符串操作进行了回合运算,但是我放弃了除法运算。
Alex Turpin

2

我创建的Numeral.js库可以格式化数字,货币,百分比并支持本地化。

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


1
上一次提交是numeral.js在2017年3月27日。该库是完美的(无缺陷),还是不再积极维护。截至2019年1月28日,该项目有135个未解决的问题,最古老的是自2012年11月开始。未解决问题的问题将近2年,表明该项目不再受到关注。很高兴被说服。
曼弗雷德


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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.