js 加减乘除以及四舍五入 新写法
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 加减乘除以及四舍五入 新写法的更多相关文章
- Atitit.js模块化 atiImport 的新特性javascript import
Atitit.js模块化 atiImport 的新特性javascript import 1. 常见的js import规范amd ,cmd ,umd1 1.1. Require更多流行3 2. at ...
- js实现小数点四舍五入
js实现小数点四舍五入 其实这个问题,在之前的面试中被提问到了,由于笔者平时都是用原生的toFixed()的方法来保留小数点,所以当时并没有回答出来这个问题,呜呜呜~.~
- 介绍Ext JS 4.2的新特性的《深入浅出Ext JS》上市
以用户为中心的时代,应用的界面外观变得越来越重要.然而,很多程序员都缺乏美术功底,要开发出界面美观的应用实属不易.Ext JS的出现,为广大程序员解决了这一难题.它有丰富多彩的界面和强大的功能,是开发 ...
- Atitit js版本es5 es6新特性
Atitit js版本es5 es6新特性 Es5( es5 其实就是adobe action script的标准化)1 es6新特性1 Es5( es5 其实就是adobe action scrip ...
- 《精通Matlab神经网络》例10-16的新写法
<精通Matlab神经网络>书中示例10-16,在创建BP网络时,原来的写法是: net = newff(minmax(alphabet),[S1 S2],{'logsig' 'logsi ...
- atitit.js 各版本 and 新特性跟浏览器支持报告
atitit.js 各版本 and 新特性跟浏览器支持报告 一个完整的JavaScript实现是由以下3个不同部分组成的 •核心(ECMAScript)--JavaScript的核心ECMAScrip ...
- [BS-02] iOS数组、字典、NSNumber 新写法—— @[]、@{}
IOS数组.字典.NSNumber 新写法—— @[].@{} //标准写法 NSNumber * number = [NSNumber numberWithInt:]; NSArray * ar ...
- 【译】 Node.js v0.12的新特性 -- Cluster模式采用Round-Robin负载均衡
原文:https://strongloop.com/strongblog/whats-new-in-node-js-v0-12-cluster-round-robin-load-balancing 本 ...
- 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的原理 ...
随机推荐
- Qt linux获取cpu使用率、内存、网络收发速度、磁盘读写速度、磁盘剩余空间等
#include "resource_minitor.h" #include "sys/statfs.h" resource_minitor::resource ...
- mybatis入门篇:代码生成器(MyBatis Generator)
这篇文章只是按照自己的需要去配置代码生成器,未对所有配置进行讲解,需要了解具体详情的,请到官网查阅文档.传送门:http://www.mybatis.org/generator/ 1.首先引入相关的依 ...
- java 日志脱敏框架 sensitive,优雅的打印脱敏日志
问题 为了保证用户的信息安全,敏感信息需要脱敏. 项目开发过程中,每次处理敏感信息的日志问题感觉很麻烦,大部分都是用工具类单独处理,不利于以后统一管理,很不优雅. 于是,就写了一个基于 java 注解 ...
- SQL修改某个字段中某相同部分(MySQL)
格式:UPDATE 表名 SET 字段名= REPLACE( 替换前的字段值, '替换前关键字', '替换后关键字' ) WHERE 条件;比如:update t_book SET book_no ...
- thingsboard改造使用mysql数据库
thingsboard从2.2版本开始,兼容关系型数据库与非关系型数据库共用(关系型数据库保存实体类信息.非关系型数据库cassandra保存遥测数据信息).由于国内偏向使用mysql数据库,而非po ...
- 关于Hibernate和Strtus2的xml提示问题
话不多说,上图 1.Windom 2.preferences 3.搜索框搜索xml catalog 点击Add 4.导入约束(具体操作图上1.2.3)
- 软件工程个人作业四--alpha阶段个人总结
个人总结 (1)个人总结 类型 具体技能和面试问题 现在的回答 毕业找工作的时间 语言 最拿手的计算机语言之一,代码量多少 C语言相对熟悉一点 软件实现 你有没有在别的代码的基础上改进,你是怎么读懂别 ...
- MyBatis 生命周期
一.SqlSessionFactoryBuilder SqlSessionFactoryBuilder是利用XML或是Java编码获得资源来构建SqlSessionFactory的,通过他可以构建多个 ...
- if __name__ == 'main': 的作用和原理
if __name__ == 'main': 功能 一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行. if __na ...
- JeecgBoot版本4月份新版即将发布,抢先体验。。
JeecgBoot版本4月份新版即将发布,抢先体验.. 即将发布版本-更新日志: 1.代码生成器GUI工具 2.支持一对多代码生成器 3.支持按钮权限 4.支持数据权限 ...