14

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);
    } }
4

3 に答える 3

68

したがって、次のような文字列があります50%。どうですか:

var percent = "50%";
var result = parseFloat(percent) / 100.0;
于 2012-06-18T18:12:14.193 に答える
18

を使用すると、最初の数字以外の文字 ( )parseFloatまで文字列が読み取られます。%

var x = '20.1%';
var y = parseFloat(x); // 20.1

次に、それが であるかどうかを確認しNaN、変換できます。

if(!isNaN(y)){
    y /= 100; // .201
)

注: isを使用する必要がありますisNaN( JavaScript は奇妙です)。NaN === NaNfalse

更新:あなたもfracToDecimalそこにいるようです。その必要はありませんeval。簡単なことをするだけですsplit

var frac = '1/2';
var nums = frac.split('/');
var dec = nums[0]/nums[1];
于 2012-06-18T18:13:13.577 に答える
5

「%」が文字列の右側にあると仮定して、そのまま使用しますparseFloat(s)/100

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

于 2012-06-18T18:12:12.180 に答える