2013-04-08 46 views
0

我有一个浮动, VAR一个= 324620.8格式浮球随两位小数,而无需使用.toFixed()

,我希望它看起来像这样 A = 324620.80

这是到目前为止我的代码,

var a_float = a; 
    var a_int = parseInt(a); 

    d = a_float - a_int; 
    if(d <= 0){ 
     a = a_int+'.00'; 
    }else{ 
     if(d < 0 && d > 0.1){ 
      a = a_int + d + '0'; 
     }else{ 
      a = a_float; 
     } 
    } 

这将适用于只有一个十进制数字。 当我有2个十进制数字时,我想让它工作。

.toFixed在某些浏览器中不起作用。

+2

不要重新发明轮子,用[toFixed()](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/toFixed)来代替。 (或者搜索堆栈溢出,这个问题在这里已经有几百个重复。) – 2013-04-08 16:33:41

+1

答案在于长分区。 – Shark 2013-04-08 16:33:51

回答

0

JSFIDDLE 使用toFixed("2");

var f = 1.3454545; 
f.toFixed(2); 
0
var decimal = 4.0; 
var a = (decimal).toFixed(2); 


console.log(a); // outputs 4.00 
4

回答这个问题在标题

如何找到多少个十进制数字的浮动?

比较的'.'位置到浮子的长度作为字符串

var x = 1.2345, 
    x_str = x.toString(), 
    decimal_digits = x_str.length - x_str.lastIndexOf('.') - 1; 
decimal_digits === x_str.length && (decimal_digits = 0); // case no decimal 
decimal_digits; // 4 
+0

通过搜索发现了这个问题,你回答了我的问题,并且你是正确的,这应该是正确/被接受的问题答案。他们的错误措辞不正确 – Francisc0 2013-10-01 20:13:27

+0

也,这一行究竟发生了什么:'decimal_digits === x_str.length &&(decimal_digits = 0);'我不认识这种类型的运算符格式。 – Francisc0 2013-10-01 20:14:15

+0

_逻辑AND_'&&',考虑; ''a'&&'b'//'b'','false &&'b'// false'。这与括号内的正常集合“=”相结合(因此编译器理解'='的_LHS_是什么)。 ------''decimal_digits === x_str.length'表示'x_str.length - x_str.lastIndexOf('。') - 1 === x_str.length',重新排列,'x_str.lastIndexOf('。 ')=== -1',即'&&'的_LHS_只有在'x_str'中没有'.'时才是真的 – 2013-10-02 12:29:54