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. freemarker数据类型

    基本数据类型: 字符串 数字 布尔值 日期/时间 (日期,时间或日期时间) 数据结构: 哈希表 序列 注意一点:freemarker里面并没有对象这一数据类型!!!. 在freemarker中对象仅仅 ...

  2. React高级指引

    深入JSX 本质上来讲,JSX是为React.createElement方法提供的语法糖 <MyButton color=}> Click Me </MyButton> 编译为 ...

  3. win10系统搜索不到某些老式打印机

    问题: win10系统在设置选项里面搜索打印机,却找不到打印机. 百度了一下: 基本说的是驱动问题. 解决方法: 1.下载lansee局域网扫描软件 2.打开嗅探工具点击开始 3.搜索出来之后,会在共 ...

  4. .NET Core 中的通用主机和后台服务

    简介 我们在做项目的时候, 往往要处理一些后台的任务. 一般是两种, 一种是不停的运行,比如消息队列的消费者.另一种是定时任务. 在.NET Framework + Windows环境里, 我们一般会 ...

  5. PG数据基本命令——连接(笔记)

    在PostgreSQL中,有以下类型的连接: 内连接(INNER JOIN) 左外连接(LEFT OUTER JOIN) 右外连接(RIGHT OUTER JOIN) 全连接(FULL OUTER J ...

  6. nginx功能扩展整理

    0.基本负载均衡配置 编辑/etc/nginx/nginx.conf,加入负载平衡配置: http { upstream tomcat { server localhost:8080; server ...

  7. python实现将android手机通讯录vcf文件转化为csv

    经常会遇到将手机通讯录导出到电脑并转化为在电脑中可编辑的情况,在网上搜索了很久当前不外乎两种处理方式.1.使用电脑的outlook的通讯簿功能,将手机导出的vcf文件导入到outlook的通讯录中,然 ...

  8. ajax请求中包含中文参数

    对需要传递的中文参数先进行两次转码: 1.js文件中使用encodeURI()方法. var url = "Validate.jsp?id=" + encodeURI(encode ...

  9. 嵌入式linux——S3C2440介绍(二)

    一.关于S3C2440要知道的事情 (唉,刚才按错了键,弹出了网页的代码,关闭之后,白屏,什么都没有,网页返回,就没保存上,在敲一边...) 1. S3C244三星公司的芯片 2. S3C2440的构 ...

  10. eclipse启动tomcat正常,但是debug启动报错FATAL ERROR in native method:JDWP No transports initialized,jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197) ERROR: transport error 202: connect failed:Connection timed out

    FATAL ERROR in native method:JDWP No transports initialized,jvmtiError=AGENT_ERROR_TRANSPORT_INIT(19 ...