Javascript parseFloat(number) - 返回int的parseFloat(number2)

时间:2014-03-11 13:32:05

标签: javascript

我很抱歉,但我需要帮助:(

我试过将字符串转换为十进制并且它可以工作,但我有一些问题:

    number = document.getElementById("totalcost").innerHTML;    //It is a string, but I am sure that it is a decimal
    number2 = prodCost;  //it is a string but in fact it is a decimal too
    alert(parseFloat(number)); // prints good (if number is 88,9 it will print 88,9)
    alert(parseFloat(number2)); // it's ok too

    alert(parseFloat(number) - parseFloat(number2)); // this is not ok :(
    //if number=88,9 and number2=17,77 I get 71 but i need 71,13
噢,伙计们,我很抱歉,我是傻瓜。非常感谢!我已连续工作了9个小时..我很抱歉,谢谢大家!

4 个答案:

答案 0 :(得分:2)

这看起来像是一个语言环境问题:parseFloat只能将句点识别为小数点;当它到达逗号时它停止解析,只给你整数值。不幸的是,没有办法改变这种行为。您需要用数字字符串中的句点替换逗号以获得​​十进制数字。

答案 1 :(得分:0)

如果你使用点而不是逗号(例如:71.13而不是71,13),一切都会按预期工作

答案 2 :(得分:0)

parseIntparseFloat获取所提供字符串中的第一个有效数字。

,无效

parseFloat("17,77".replace(",","")); //1777
如果使用逗号作为分隔符,

应该可以解决问题。

或者如果逗号用作小数点

parseFloat("17,77".replace(",",".")); //17.77

在MDN [{3}}

中解释
  

如果parseInt遇到的字符不是数字   指定的基数,它忽略它和所有后续字符和   返回解析到该点的整数值。 parseInt截断   数字到整数值。允许前导和尾随空格。

答案 3 :(得分:0)

似乎您需要使用这些标准来操纵数字

  • 小数点分隔符是','而不是'。',如1,2345(一点二三四五)
  • 群组分隔符是'。'代替'而不是'像1.000,1(一千点一个)

您可以使用numeral.js来操纵此需求。

尝试转到http://numeraljs.com/并打开chrome dev,然后尝试使用这些示例代码自行播放

// declare fr lang
numeral.language('fr', {
    delimiters: {
        thousands: ' ',
        decimal: ','
    },
    abbreviations: {
        thousand: 'k',
        million: 'm',
        billion: 'b',
        trillion: 't'
    },
    ordinal : function (number) {
        return number === 1 ? 'er' : 'ème';
    },
    currency: {
        symbol: '€'
    }
});

numeral.language('fr'); // set fr lang

number = '88,9';
number2 = '17,77';

numberRaw = numeral().unformat(number); // convert string to number
numberRaw2 = numeral().unformat(number2); // convert string to number

resultRaw = numberRaw - numberRaw2; // calculate result

resultStr = numeral(resultRaw).format('0,0.00'); // format to string

console.log(resultStr); // print 71,13