parseInt处理带逗号数值异常:如何保留原格式化结果?
解决带逗号格式化数值字符串的获取问题
看起来你搞混了parseInt的用途和你的实际需求,咱们一步步理清楚:
问题根源
parseInt()的设计就是从字符串左侧开始解析整数,遇到第一个非数字字符(这里的逗号,)就会停止解析,所以它把"10,10.12"解析成10是完全符合预期的行为——但这显然不是你想要的,因为你需要的是保留带逗号的格式化后字符串。
解决方案
根据你的场景(数值由Angular的number:2过滤器生成,绑定在JSP的ng-value上),分两种情况处理:
1. 直接获取页面上已格式化的字符串
如果你的目标是拿到页面元素中显示的带逗号字符串,根本不需要用parseInt,直接读取元素的value属性即可:
// 假设你的输入框id是cuotaInput var formattedStr = document.getElementById('cuotaInput').value; // 此时formattedStr就是"10,10.12"
2. 在Angular控制器中重新生成格式化字符串
如果你是从模型UpdatedPropuesta.VALOR_CUOTA(原始数值,比如1010.12)出发,想要自己生成带逗号的格式化字符串,可以用Angular的$filter服务:
// 在控制器中注入$filter服务 app.controller('YourController', ['$scope', '$filter', function($scope, $filter) { // 对原始数值应用number过滤器,保留2位小数 $scope.formattedCuota = $filter('number')($scope.UpdatedPropuesta.VALOR_CUOTA, 2); // 此时formattedCuota就是"10,10.12"(取决于你的本地化设置,逗号是千位分隔符) }]);
额外注意:如果需要把格式化字符串转回数字计算
要是之后需要对这个带逗号的字符串做数值运算,可以先移除逗号再转换:
var numericValue = parseFloat(formattedStr.replace(/,/g, '')); // 此时numericValue就是1010.12,可以用于计算
内容的提问来源于stack exchange,提问作者Naresh Donthula
相关产品推荐
相关产品推荐

