调整小数的格式保留小数点后两位

在开发过程中经常遇到要调整小数的格式,如保留小数点后两位等等。方法也颇为常见,备忘如下。

第一种,利用math.round

var original=28.453
1) //round "original" to two decimals
var result=Math.round(original*100)/100; //returns 28.45
2) // round "original" to 1 decimal
var result=Math.round(original*10)/10; //returns 28.5

第二种,js1.5以上可以利用toFixed(x) ,可指定数字截取小数点后 x位

3) //round "original" to two decimals
var result=original.toFixed(2); //returns 28.45

4) // round "original" to 1 decimal
var result=original.toFixed(1); //returns 28.5

以上两种方法最通用,但却无法满足某些特殊要求,比如保留小数点后两位,如果不满两位,不满两位则补零。此时就有了第三种方法。

第三种,转换函数,这段代码来源于国外一个论坛。


代码如下:

function roundNumber(number,decimals) {
var newString;// The new rounded number
decimals = Number(decimals);
if (decimals < 1) {
newString = (Math.round(number)).toString();
} else {
var numString = number.toString();
if (numString.lastIndexOf(".") == -1) {// If there is no decimal point
numString += ".";// give it one at the end
}
var cutoff = numString.lastIndexOf(".") + decimals;// The point at which to truncate the number
var d1 = Number(numString.substring(cutoff,cutoff+1));// The value of the last decimal place that we'll end up with
var d2 = Number(numString.substring(cutoff+1,cutoff+2));// The next decimal, after the last one we want
if (d2 >= 5) {// Do we need to round up at all? If not, the string will just be truncated
if (d1 == 9 && cutoff > 0) {// If the last digit is 9, find a new cutoff point
while (cutoff > 0 && (d1 == 9 || isNaN(d1))) {
if (d1 != ".") {
cutoff -= 1;
d1 = Number(numString.substring(cutoff,cutoff+1));
} else {
cutoff -= 1;
}
}
}
d1 += 1;
}
if (d1 == 10) {
numString = numString.substring(0, numString.lastIndexOf("."));
var roundedNum = Number(numString) + 1;
newString = roundedNum.toString() + '.';
} else {
newString = numString.substring(0,cutoff) + d1.toString();
}
}
if (newString.lastIndexOf(".") == -1) {// Do this again, to the new string
newString += ".";
}
var decs = (newString.substring(newString.lastIndexOf(".")+1)).length;
for(var i=0;i<decimals-decs;i++) newString += "0";
//var newNumber = Number(newString);// make it a number if you like
document.roundform.roundedfield.value = newString; // Output the result to the form field (change for your purposes)
}

5) //round "original" to two decimals
var result=original.toFixed(2); //returns 28.45

6) // round "original" to 1 decimal
var result=original.toFixed(1); //returns 28.5

var original=28.4
var result=original.toFixed(2); //returns 28.40

(0)

相关推荐

  • 调整小数的格式保留小数点后两位

    在开发过程中经常遇到要调整小数的格式,如保留小数点后两位等等.方法也颇为常见,备忘如下. 第一种,利用math.round var original=28.453 1) //round "original" to two decimals var result=Math.round(original*100)/100; //returns 28.45 2) // round "original" to 1 decimal var result=Math.round(

  • c++只保留float型的小数点后两位问题

    目录 c++ 只保留float型的小数点后两位 C++ cout输出小数点后指定位数 参考代码 c++ 只保留float型的小数点后两位 float spd = 22.518744; char buf[10]; sprintf(buf, "%.2f", spd); sscanf(buf, "%f", &spd); 记录一下,有时候我们需要float类型只保留两个有效小数,但是在实际应用中会发现一些现象 如:1.5 在实际中为1.49999998 等等 还有一

  • C++详解使用floor&ceil&round实现保留小数点后两位

    目录 C++四舍五入保留小数点后两位 1.floor函数 2.ceil函数 3.round函数 C++四舍五入保留小数点后两位 示例 #include <iostream> using namespace std; int main() { double i = 2.235687; double j = round(i * 100) / 100; cout << "The original number is " << i << endl

  • Android金额输入框只允许输入小数点后两位效果

    一:要实现这个效果也不是很复杂,只需要设置输入框输入的字符类型.设置InputFilter.设置输入变化监听即可.下面直接来看代码吧-. 二:new 一个class extends AppCompatEditText并写上一个初始化函数 private void init() { //设置输入框允许输入的类型(正则) //对应的布局属性是--->android:digits="0123456789." setKeyListener(DigitsKeyListener.getIns

  • Android 限制显示小数点后两位的实现方法

    限制Android显示小数点后两位小数格式可以使用两种方法(个人在项目中使用的,并不代表就这两种,还有很多),好了废话不多说,上内容. 1.第一张方法:使用DecimalFormat API DecimalFormat format = new DecimalFormat("#.##"); String numberStr = format.format(numberDecimal); Log.e("TAG","numberStr => "

  • js取小数点后两位四种方法

    Javascript取float型小数点后两位,例22.123456取成22.12,如何做? 1.通过substring截取. function getnum() { var num = 22.123456; var result = num.substring(0,s.indexOf(".")+3); alert(result); } 2. 正则表达式. function getnum() { var num = 22.123456; var aNew; var re = /([0-

  • JavaScript 获取任一float型小数点后两位的小数

    用Javascript取float型小数点后两位,例22.127456取成22.13,如何做? 1.这种方法最不推荐: function get(){ var s = 22.127456 + ""; var str = s.substring(0,s.indexOf(".") + 3); alert(str); } 2. 使用正则表达式获取: function get(){ var a = "23.456322"; var aNew; var r

  • 正负小数点后两位浮点数实现原理及代码

    背景:项目中需要做个对两位小数点的正负浮点数的处理, 要求:非数字或者.字符自动清除,并对.12自动修补.前的0 原理:在输入框中加入两个事件,keyup与blur,keyup处理字符串中非要求的字符,blur中对最终字符串处理成理想的格式111.11 实现:通过七个正则处理掉主功能 val代表输入的字符串 /^\d*\.?\d{0,2}$/ 验证val是否是ddd.dd的格式,是则不处理,否才处理 /[^.0-9]+/ 处理掉val中所有的非数字与.的字符 /(?:\d*\.\d{0,2}|\

  • mysql格式化小数保留小数点后两位(小数点格式化)

    复制代码 代码如下: SELECT FORMAT(12562.6655,2); 结果:12,562.67 查看文档:Formats the number X to a format like '#,###,###.##', rounded to D decimal places, and returns the result as a string. If D is 0, the result has no decimal point or fractional part.整数部分超过三位的时候

  • Angular限制input框输入金额(是小数的话只保留两位小数点)

    需求 输入框要求输入金额,只能输入数字,可以是小数,必须保留小数点后两位. js判断部分: checkInput: function (event) { var id = event.target.getAttribute("id");//获取input的id var reg = /^[-?\d]+(.)?(\d{1,2})?/;//匹配正则while(!reg.test(('#' + id).val()) && ('#' + id).val() != "&q

随机推荐