我很抱歉,但我需要帮助:(
我试过将字符串转换为十进制并且它可以工作,但我有一些问题:
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个小时..我很抱歉,谢谢大家!
答案 0 :(得分:2)
这看起来像是一个语言环境问题:parseFloat
只能将句点识别为小数点;当它到达逗号时它停止解析,只给你整数值。不幸的是,没有办法改变这种行为。您需要用数字字符串中的句点替换逗号以获得十进制数字。
答案 1 :(得分:0)
如果你使用点而不是逗号(例如:71.13而不是71,13),一切都会按预期工作
答案 2 :(得分:0)
parseInt
和parseFloat
获取所提供字符串中的第一个有效数字。
,
无效
parseFloat("17,77".replace(",","")); //1777
如果使用逗号作为分隔符,应该可以解决问题。
或者如果逗号用作小数点
parseFloat("17,77".replace(",",".")); //17.77
在MDN [{3}}
中解释如果parseInt遇到的字符不是数字 指定的基数,它忽略它和所有后续字符和 返回解析到该点的整数值。 parseInt截断 数字到整数值。允许前导和尾随空格。
答案 3 :(得分:0)
似乎您需要使用这些标准来操纵数字
您可以使用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