在html/javascript中将百分比转换为小数

use*_*427 7 javascript

使用Javascript:

   var validate(s) = s.match ^( 100(?:\.0{1,2})? | 0*?\.\d{1,2} | \d{1,2}(?:\.\d     {1,2})? )% $ != null; 

   var str = value.match(/\/\/%//g);

    if(converted==NaN){
            alert('Input was not a number');
    }
    else if(converted != null) {

            var fracToDecimal = eval (value);

            alert(fracToDecimal);
    }
    else if(converted = str) {

            var percToDecimal = value/100;

            alert(percToDecimal);
    } }
Run Code Online (Sandbox Code Playgroud)

rfu*_*duk 51

所以你有一个字符串:50%?怎么样:

var percent = "50%";
var result = parseFloat(percent) / 100.0;
Run Code Online (Sandbox Code Playgroud)

  • 原来的问题很糟糕,但这个答案是完美的 (5认同)

Roc*_*mat 10

如果你使用parseFloat,它将读取字符串直到第一个非数字字符(the %)

var x = '20.1%';
var y = parseFloat(x); // 20.1
Run Code Online (Sandbox Code Playgroud)

然后你可以检查它是否NaN,并转换它.

if(!isNaN(y)){
    y /= 100; // .201
)
Run Code Online (Sandbox Code Playgroud)

注意:您需要使用isNaN,因为NaN === NaNfalse(JavaScript是怪异).

更新:我看到你也在fracToDecimal那里.你不需要那样做eval.做一个简单的事split.

var frac = '1/2';
var nums = frac.split('/');
var dec = nums[0]/nums[1];
Run Code Online (Sandbox Code Playgroud)

  • NaN!==任何语言的NaN.仅供参考. (2认同)

spa*_*tes 5

假设“%”在字符串的右侧,只需使用 parseFloat(s)/100

http://jsfiddle.net/TrCYX/1/