我试图从数据网格解析两个值。字段是数字,当它们有逗号(例如554,20)时,我无法获得逗号后的数字。我试过parseInt和parseFloat。我该怎么做呢?
当前回答
我遇到了同样的问题,只是我事先不知道千位分隔符和小数点分隔符是什么。我最终编写了一个库来实现这个功能。如果你感兴趣,请访问:https://github.com/GuillaumeLeclerc/number-parsing
其他回答
Try
让STR ="554,20"; Let float = +str.replace(',','.'); Let int = str.split(',').map(x=>+x); console.log({浮动,int});
我遇到了同样的问题,只是我事先不知道千位分隔符和小数点分隔符是什么。我最终编写了一个库来实现这个功能。如果你感兴趣,请访问:https://github.com/GuillaumeLeclerc/number-parsing
如果有人正在寻找一种从任意字符串解析float的方法,
可以这样做:
function extractFloat(text) {
const match = text.match(/\d+((\.|,)\d+)?/)
return match && match[0]
}
extractFloat('some text with float 5.25') // 5.25
@GusDeCool或任何人试图替换超过一千个分隔符,一种方法是一个regex全局替换:/foo/g。记住这一点。是元字符,因此必须转义或将其放在括号中(\。或[])。这里有一个选择:
var str = '6.000.000';
str.replace(/[.]/g,",");
用点代替逗号。
这只会返回554:
var value = parseFloat("554,20")
这将返回554.20:
var value = parseFloat("554.20")
所以最后,你可以简单地使用:
var fValue = parseFloat(document.getElementById("textfield").value.replace(",","."))
不要忘记parseInt()应该只用于解析整数(不能解析浮点数)。在你的例子中,它只会返回554。此外,在浮点数上调用parseInt()将不会四舍五入该数字:它将取其底数(最接近的较低整数)。
扩展的例子来回答Pedro Ferreira的问题:
如果文本字段包含数千个分隔点,如1.234.567,99,这些可以通过另一个替换提前消除:
var fValue = parseFloat(document.getElementById("textfield").value.replace(/\./g,"").replace(",","."))
推荐文章
- 给一个数字加上st, nd, rd和th(序数)后缀
- 如何以编程方式触发引导模式?
- setTimeout带引号和不带括号的区别
- 在JS的Chrome CPU配置文件中,'self'和'total'之间的差异
- 用javascript检查输入字符串中是否包含数字
- 如何使用JavaScript分割逗号分隔字符串?
- 在Javascript中~~(“双波浪号”)做什么?
- 谷歌chrome扩展::console.log()从后台页面?
- 未捕获的SyntaxError:
- [].slice的解释。调用javascript?
- jQuery日期/时间选择器
- 我如何预填充一个jQuery Datepicker文本框与今天的日期?
- 数组的indexOf函数和findIndex函数的区别
- jQuery添加必要的输入字段
- Access-Control-Allow-Origin不允许Origin < Origin >