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. Ubuntu下安装Snap

    介绍 Snap是一个全新的软件包架构,它与其它包管理器的区别在于snap安装的app互相之间是高度隔离的,减少了互相引用. 避免了很多冲突问题. 不过这也导致了其占用的磁盘比较多. 安装 apt in ...

  2. org.apache.catalina.LifecycleException项目启动报错

    严重: A child container failed during startjava.util.concurrent.ExecutionException: org.apache.catalin ...

  3. Could not create local repository at /home/yizhenn/.m、IDEA倒入maven项目无法导报问题

    问题描述: 用自己电脑新搭建环境,用idea倒入项目后发现无法倒入jar包,很少郁闷,折腾了很久,最终发现问题 settings文件中下面这个配置,需要是自己电脑的路径 <localReposi ...

  4. 70.纯 CSS 创作一只徘徊的果冻怪兽

    原文地址:https://segmentfault.com/a/1190000015484852 感想:monster中边框角.上下动画.旋转动画.左右动画,眼睛中transform:scaleY(n ...

  5. Tesseract--主要API功能介绍

    tesseract本身代码是由c/c++混编而成的,其中有用的简单的接口函数几乎都是在baseapi.h中.     从其处理过程中,不难得出:它还需要有一个image处理的类,及相关的方法:这样子, ...

  6. azkaban工作流调度器及相关工具对比

    本文转载自:工作流调度器azkaban,主要用于架构选型,安装请参考:Azkaban安装与简介,azkaban的简单使用 为什么需要工作流调度系统 一个完整的数据分析系统通常都是由大量任务单元组成: ...

  7. Swoft 缓存及Redis使用

    配置 修改 /config/properties/cache.php 文件 return [ 'redis' => [ 'name' => 'redis', 'uri' => [ ' ...

  8. Head First Java.(第2版)

    优点:语法 面向对象 内存管理 和最棒的跨平台可移植性 缺点: 慢 JVM Java(虚拟机) 编译后的字节码与平台无关. 你的朋友不会买一台真正的Java机器,但是他们都会有Java虚拟机(通过软件 ...

  9. 修复Microsoft Store 无法连接网络 代码: 0x80072EFD

    事情的经过是这样的,我的Windows版本是1709,前两天刚从1703升上来,今天突然发现它自己给我装了个skype,我上Microsoft商店里查一下是什么情况,结果突然发现它又双双双不正常工作了 ...

  10. 如何监控Redis性能指标(译)

    Redis给人的印象是简单.很快,但是不代表它不需要关注它的性能指标,此文简单地介绍了一部分Redis性能指标.翻译过程中加入了自己延伸的一些疑问信息,仍然还有一些东西没有完全弄明白.原文中Metri ...