如何将数字固定为两个小数点而不应用舍入?

时间:2016-08-25 09:20:33

标签: javascript angularjs

我的号码是15.67789

我想只显示小数点后的两个数字(即15.67),而不对数字进行任何舍入。

例如:

15.67789.toFixed(2)返回15.68而不是

我只想显示15.67

3 个答案:

答案 0 :(得分:1)

使用正则表达式:

编辑:我修改了正则表达式以接受没有小数位的数字和带小数点后一位的数字(感谢@ Mi-Creativity):

var num = 134.35324; 
num.toString().match(/^(\d*(\.\d{0,2})?)/)[0];

工作示例https://jsfiddle.net/yevwww8m/2/

使用substr

var num = 15.67789;
num = num.toString().substr(0,'15.67789'.indexOf('.')+3);

工作示例:https://jsfiddle.net/pmmy9o3r/

只是为了好玩,使用正则表达式替换:

var num = 15.57789; 
num = num.toString().replace(/^(\d+\.\d{2}).*/g, '$1');

工作示例:https://jsfiddle.net/4eq3jd4e/

答案 1 :(得分:0)

angular.module('app', [])
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app='app'>
<input type='number' ng-model='tex' />
{{tex|number:2}}
</body>

使用number过滤器指定小数点后显示的位数。

答案 2 :(得分:0)

<强>更新

只需将数字乘以100即可将点移动两位小数,然后将其除以100

&#13;
&#13;
var nums = [15.67789, 101.62, 134.35324, 0.00658853, 0.002422, 4.27, 1.1095];

for (var i = 0; i < nums.length; ++i) {
  var temp = nums[i] * 100;
  temp = (('' + temp).split('.')[1] !== '99999999999994') ? (Math.floor(temp) / 100) : nums[i];
  console.log(temp.toFixed(2));
}
&#13;
&#13;
&#13;