2016-08-03 22 views
0

我不知道我在哪裏失敗。我正在嘗試一個簡單的事情:檢索一個輸入,解析它以浮動並用該值進行計算(由用戶引入),但是它返回NaN。解析後浮動輸入值仍爲字符串

這是輸入(I作逗號的字符串替換,以點在我的代碼,但現在我只是想在Firebug控制檯最簡單的方法):

<input id="percent_31" class="form-control input-sm text-right" type="text" name="percent[31]" value="-3.3333"> 

這是我我試圖:

var percent = parseFloat($('#percent_31').val()).toFixed(2); 
console.log(percent); 
console.log(jQuery.type(percent)); 
/*This returns -3.33 and string type*/ 
console.log((100 + percent)/100); 
/*This, as expected, returns NaN*/ 

另一方面,這工作。

percent = -3.33; 
console.log(percent); 
console.log(jQuery.type(percent)); 
/*This returns -3.33 and number type*/ 

console.log((100 + percent)/100); 
/*This returns what I need: 0.9667*/ 
+5

'toFixed'返回字符串,則無法裁剪你浮這種方式。 – Maxx

+1

['Number.prototype.toFixed()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed)通過設計將數字轉換爲字符串。 –

+0

Maxx說'.toFixed(2);'返回一個字符串 - 因爲'5.00' *技術上*不是數字,它只是'5' - 所以它需要變成一個字符串來保持格式化 – tymeJV

回答

1

如果你想最多兩個小數:

> percent = "-3.33678"; 
'-3.33678' 
> typeof(percent); 
'string' 
> percent = Number(parseFloat(percent).toFixed(2)); 
-3.34 
> typeof(percent); 
'number' 

如果你想截斷小數,而不是他們周圍:

> percent = "-3.33678"; 
'-3.33678' 
> typeof(percent); 
'string' 
> percent = Number(percent.slice(0, (percent.indexOf(".")) + 3)); 
-3.33 
> typeof(percent); 
'number' 
+0

這將返回所有小數,我只需要兩個。 – Tyrannogina

+1

將變量保留爲數字以執行所有操作並且不會鬆動精度,並且只需要使用.toFixed(2)打印其值只有兩位小數的值。 –

+0

但我需要以兩位小數的精度進行計算。 – Tyrannogina

0

創建變量併爲該變量賦值。

var myvalue = $('#percent_31').val(); 
var percent = parseFloat(myvalue).toFixed(2); 
console.log(percent); 
+0

我已經試過這個,它也沒有工作。返回字符串。 – Tyrannogina

+0

嘗試使用parseInt @Ika或刪除tofixed –

+0

parseInt不保留小數。 – Tyrannogina

0

jQuery的方法val()正在返回一個字符串,因此您可以使用Number()來處理數值:

var val = $('#percent_31').val(), 
 
    percent = Number(parseFloat(val).toFixed(2)), 
 
    result = (100 + percent)/100; 
 

 
console.log('percent:', percent); 
 
console.log('type:', $.type(percent)); 
 
console.log('result:', result);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<input id="percent_31" class="form-control input-sm text-right" type="text" name="percent[31]" value="-3.3333">

1

您可以使用 'Number()'

var values = $('#percent_31').val(); 
 
var percent = Number(parseFloat(values).toFixed(2)); 
 
console.log(percent); 
 
//console.log(jQuery.type(percent)); 
 
/*This returns -3.33 and string type*/ 
 
console.log((100 + percent)/100); 
 
/*This, as expected, returns NaN*/
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="percent_31" class="form-control input-sm text-right" type="text" name="percent[31]" value="-3.3333">