如何在不应用四舍五入的情况下将数字固定为两个小数点



我有数字显示15.67789

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

For example:

15.67789.toFixed(2)返回15.68代替

我只想显示15.67

Using regex:

编辑:我修改了regex以接受没有小数点的数字和有一个小数点的数字(感谢@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/

只是为了好玩,使用regex替换:

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

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

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过滤器指定小数点后显示的位数

更新

简单地将数字乘以100移动小数点后两位,然后除以100

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));
}

最新更新