1 四舍五入

eg: (1.23).round() = 1.2

(1.2456).round(3) = 1.246

Number.prototype.round = function (count) {
var res = ;
var val = this.toString();
var num = parseInt(count || );
var dataArr = val.split('.');
var arr1 = dataArr[] || "";
var arr2 = dataArr[] || "";
var newArr2 = arr2;
if (arr2.length > num) {
var lastNum = arr2.substring(num, num + );
if (parseInt(lastNum) >= ) {
newArr2 = parseInt(newArr2.substring(, num)) + ;
newArr2 = newArr2.toString();
if(newArr2.length<num){
for(var i =; i< (num - newArr2.length); i ++){
newArr2 = "" + newArr2;
}
}
else if (newArr2.length > num) {
arr1 = (parseInt(arr1) + ).toString();
newArr2 = newArr2.substring(, );
}
}
} val = parseFloat(arr1 + '.' + newArr2);
res = parseFloat(val.toFixed(num));
return res;
}

2 加减乘除

eg: (1).plus(2) = 3

if (!Number.prototype.plus) { //'+'
Number.prototype.plus = function (addend) {
var arg1 = this,
arg2 = addend;
var r1,
r2,
m,
num1,
num2;
try {
r1 = arg1.toString().split(".")[].length;
} catch (e) {
r1 =
}
try {
r2 = arg2.toString().split(".")[].length;
} catch (e) {
r2 =
}
m = Math.pow(, Math.max(r1, r2));
num1 = r1 == ? parseInt(arg1 * m) : (parseInt(`${arg1.toString().replace('.', '')}`) * m / (Math.pow(, r1)));
num2 = r2 == ? parseInt(arg2 * m) : (parseInt(`${arg2.toString().replace('.', '')}`) * m / (Math.pow(, r2)));
return (num1 + num2) / m;
}
} if (!Number.prototype.minus) { //'-'
Number.prototype.minus = function (Subtraction) {
var arg1 = this,
arg2 = Subtraction;
var r1,
r2,
m,
n,
num1,
num2;
try {
r1 = arg1.toString().split(".")[].length
} catch (e) {
r1 =
}
try {
r2 = arg2.toString().split(".")[].length
} catch (e) {
r2 =
}
m = Math.pow(, Math.max(r1, r2));
n = (r1 >= r2) ? r1 : r2;
num1 = r1 == ? parseInt(arg1 * m) : (parseInt(`${arg1.toString().replace('.', '')}`) * m / (Math.pow(, r1)));
num2 = r2 == ? parseInt(arg2 * m) : (parseInt(`${arg2.toString().replace('.', '')}`) * m / (Math.pow(, r2)));
return parseFloat(((num1 - num2) / m).toFixed(n));
}
} if (!Number.prototype.multiply) { //'*'
Number.prototype.multiply = function (multiple) {
var arg1 = this,
arg2 = multiple;
var m = ,
s1 = arg1.toString(),
s2 = arg2.toString();
try {
m += s1.split(".")[].length
} catch (e) { }
try {
m += s2.split(".")[].length
} catch (e) { }
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(, m)
} if (!Number.prototype.devide) { //'/'
Number.prototype.devide = function (divisor) {
var arg1 = this,
arg2 = divisor;
var t1 = ,
t2 = ,
r1,
r2;
try {
t1 = arg1.toString().split(".")[].length
} catch (e) { }
try {
t2 = arg2.toString().split(".")[].length
} catch (e) { }
r1 = Number(arg1.toString().replace(".", ""))
r2 = Number(arg2.toString().replace(".", ""))
return (r1 / r2).multiply(Math.pow(, t2 - t1));
}
}
}

js 加减乘除以及四舍五入 新写法的更多相关文章

  1. Atitit.js模块化 atiImport 的新特性javascript import

    Atitit.js模块化 atiImport 的新特性javascript import 1. 常见的js import规范amd ,cmd ,umd1 1.1. Require更多流行3 2. at ...

  2. js实现小数点四舍五入

    js实现小数点四舍五入 其实这个问题,在之前的面试中被提问到了,由于笔者平时都是用原生的toFixed()的方法来保留小数点,所以当时并没有回答出来这个问题,呜呜呜~.~

  3. 介绍Ext JS 4.2的新特性的《深入浅出Ext JS》上市

    以用户为中心的时代,应用的界面外观变得越来越重要.然而,很多程序员都缺乏美术功底,要开发出界面美观的应用实属不易.Ext JS的出现,为广大程序员解决了这一难题.它有丰富多彩的界面和强大的功能,是开发 ...

  4. Atitit js版本es5 es6新特性

    Atitit js版本es5 es6新特性 Es5( es5 其实就是adobe action script的标准化)1 es6新特性1 Es5( es5 其实就是adobe action scrip ...

  5. 《精通Matlab神经网络》例10-16的新写法

    <精通Matlab神经网络>书中示例10-16,在创建BP网络时,原来的写法是: net = newff(minmax(alphabet),[S1 S2],{'logsig' 'logsi ...

  6. atitit.js 各版本 and 新特性跟浏览器支持报告

    atitit.js 各版本 and 新特性跟浏览器支持报告 一个完整的JavaScript实现是由以下3个不同部分组成的 •核心(ECMAScript)--JavaScript的核心ECMAScrip ...

  7. [BS-02] iOS数组、字典、NSNumber 新写法—— @[]、@{}

    IOS数组.字典.NSNumber 新写法—— @[].@{}   //标准写法 NSNumber * number = [NSNumber numberWithInt:]; NSArray * ar ...

  8. 【译】 Node.js v0.12的新特性 -- Cluster模式采用Round-Robin负载均衡

    原文:https://strongloop.com/strongblog/whats-new-in-node-js-v0-12-cluster-round-robin-load-balancing 本 ...

  9. atitit.atiOrm.js v2 q61 版本新特性.docx

    atitit.atiOrm.js v2 q61 版本新特性.docx 1. V1新特性如下1 1.1. V2规划,直接生成sql在js端1 2. Orm设计框架图1 2.1. atiOrm.js的原理 ...

随机推荐

  1. 认识MyBatis-总述

    关于mybatis的源码,博客园以及其他平台有了相当多的精美,优秀的解析. 而此次本人的记录通过查阅官方文档,以及实际运行中的代码,来回答有实际意义的问题. 目标:理解MYBATIS.MYBATIS的 ...

  2. Python基础之re模块

    什么是模块? 为了编写可维护的代码,我们把很多的函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式,在Python中,一个.py文件就称为一个模块 ...

  3. IO多路复用(Python)

    1. select: 监听多个文件描述符(当文件描述符条件不满足时,select会阻塞),当某个文件描述符状态改变后,将该文件描述符添加到对应返回的列表 调用: fd_r_list, fd_w_lis ...

  4. 嵌入式 printf函数

    来自:https://www.cnblogs.com/02xiaoma/archive/2012/06/22/2558618.html #include <stdio.h> #includ ...

  5. C# 反射获取属性值、名称、类型以及集合的属性值、类型名称

    实体类 class Product { public string Id { get; set; } public string Name { get; set; } public List<P ...

  6. Android 开发 重写定位器类Timer与TimerTask

    class AttendanceTimer extends Timer { private static final int LOCATION = 0x01; private static final ...

  7. 从RDS中获取binlog

    由于使用RDS,但是没有开启日志,所以需要分析时,发现根本没有日志可以下载. 但是RDS中是存在binlog的,那么直接在线获取 首先在一台能够连接上RDS的数据中安装对应版本的mysql客户端. 到 ...

  8. centos7安装NFS

    在服务器上安装nfs服务,并将该服务器的/data目录进行共享. 服务端配置 安装nfs组件,并检查安装状态 yum install nfs-utils rpcbindrpm -qa nfs-util ...

  9. java反射应用

    package cn.sxt.TestClass; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetE ...

  10. Python:笔记2

    [文件操作] 1.fileopen = open(file).readlines()    //type是list 2.filewrite = open(file,'w')     filewrite ...