我试图从数据网格解析两个值。字段是数字,当它们有逗号(例如554,20)时,我无法获得逗号后的数字。我试过parseInt和parseFloat。我该怎么做呢?
当前回答
如果有人正在寻找一种从任意字符串解析float的方法,
可以这样做:
function extractFloat(text) {
const match = text.match(/\d+((\.|,)\d+)?/)
return match && match[0]
}
extractFloat('some text with float 5.25') // 5.25
其他回答
用点代替逗号。
这只会返回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(",","."))
Try
让STR ="554,20"; Let float = +str.replace(',','.'); Let int = str.split(',').map(x=>+x); console.log({浮动,int});
如果你像这样扩展String对象..
String.prototype.float = function() {
return parseFloat(this.replace(',', '.'));
}
. .你可以这样运行它
"554,20".float()
> 554.20
也适用于dot
"554.20".float()
> 554.20
typeof "554,20".float()
> "number"
您可以使用此功能。它将用' '替换逗号,然后它将parsefloat值,之后它将再次调整value中的逗号。
function convertToFloat(val) {
if (val != '') {
if (val.indexOf(',') !== -1)
val.replace(',', '');
val = parseFloat(val);
while (/(\d+)(\d{3})/.test(val.toString())) {
val = val.toString().replace(/(\d+)(\d{3})/, '$1' + ',' + '$2');
}
}
return val;
}
我遇到了同样的问题,只是我事先不知道千位分隔符和小数点分隔符是什么。我最终编写了一个库来实现这个功能。如果你感兴趣,请访问:https://github.com/GuillaumeLeclerc/number-parsing
推荐文章
- 在React Native中使用Fetch授权头
- 为什么我的球(物体)没有缩小/消失?
- 如何使用jQuery检测页面的滚动位置
- if(key in object)或者if(object. hasownproperty (key)
- 一元加/数字(x)和parseFloat(x)之间的区别是什么?
- angularjs中的compile函数和link函数有什么区别
- 删除绑定中添加的事件监听器
- 很好的初学者教程socket.io?
- HtmlSpecialChars在JavaScript中等价于什么?
- React: 'Redirect'没有从' React -router-dom'中导出
- 如何在React中使用钩子强制组件重新渲染?
- 我如何使用Jest模拟JavaScript的“窗口”对象?
- 我如何等待一个承诺完成之前返回一个函数的变量?
- 在JavaScript中根据键值查找和删除数组中的对象
- 使嵌套JavaScript对象平放/不平放的最快方法