JavaScript 深入学习及常用工具方法整理 ---- 01.浮点数

在JavaScript中是不区分整数值和浮点数值的,其中所有的数字均用浮点数值表示。JavaScript采用IEEE 754标准(有兴趣可以浏览网络规范分类下的IEEE 754标准,需要原文件请在留言处联系我)定义的64位浮点格式表示数字。

目前只针对浮点数的计算。其他的内容会在后续时间进行完善,也希望大家积极提供资源,让你学到的更多。

浮点数直接量可以用以下语法表示:

[digits][.digits][(E|e)[(+|-)]digits]

IEEE754是一种二进制表示法,可以精确的表示(1/2,1/8等等),而常用的十进制分数(1/10, 1/100)则不能精确表示

提供以下工具方法供大家使用。

之前在网上找到过一些资料,使用过程中发现除法有点问题,这里提供两种实现方法:

//说明:这个函数返回较为精确的加法结果。
//floatAdd(arg1,arg2)
//返回值:arg1加上arg2的精确结果
function floatAdd(arg1,arg2){
    var r1=0,r2=0;
    try{r1=arg1.toString().split(".")[1].length}catch(e){}
    try{r2=arg2.toString().split(".")[1].length}catch(e){}
    m=Math.pow(10,Math.max(r1,r2))
    return (arg1*m+arg2*m)/m
}
//这个函数返回较为精确的减法结果。
//floatSub(arg1,arg2)
//返回值:arg1减上arg2的精确结果
function floatSub(arg1,arg2){
    return floatAdd(arg1,-arg2);
}
//这个函数返回较为精确的乘法结果。
//floatMul(arg1,arg2)
//返回值:arg1乘以arg2的精确结果
function floatMul(arg1,arg2)
{
    var m=0,s1=arg1.toString(),s2=arg2.toString();
    try{m+=s1.split(".")[1].length}catch(e){}
    try{m+=s2.split(".")[1].length}catch(e){}
    return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
}
//这个函数返回较为精确的除法结果。
//调用:floatDiv(arg1,arg2)
//返回值:arg1除以arg2的精确结果
function floatDiv(arg1,arg2){
    var t1=0,t2=0,r1,r2;
    try{t1=arg1.toString().split(".")[1].length}catch(e){}
    try{t2=arg2.toString().split(".")[1].length}catch(e){}
    r1=Number(arg1.toString().replace(".",""))
    r2=Number(arg2.toString().replace(".",""))
    return floatMul((r1/r2),Math.pow(10,t2-t1));  //调用乘法
}
function floatDiv2(arg1,arg2){
    var m=0,s1=arg1.toString(),s2=arg2.toString(),r1,sr1;
    try{m+=s1.split(".")[1].length}catch(e){}
    try{m+=s2.split(".")[1].length}catch(e){}
    r1=Number(s1.replace(".",""))/Number(s2.replace(".",""))
    try{m+=r1.toString().split(".")[1].length}catch(e){}
    return Number(r1.toString().replace(".",""))/Math.pow(10,m)
}
时间: 2024-11-05 13:42:57

JavaScript 深入学习及常用工具方法整理 ---- 01.浮点数的相关文章

FIle类常用工具方法整理(持续更新)

1.递归遍历一个目录,获取所有文件名(也可以取到绝对路径) public static void traverse(String filePath, List<String> files) { if (StringUtils.isBlank(filePath)){ return ; } try{ File superFile = new File(filePath); if (superFile.exists()) { File[] fileList = superFile.listFiles

jQuery常用工具方法

前面的话 jQuery提供一些与元素无关的工具方法,不必选中元素,就可以直接使用这些方法.如果理解原生javascript的继承原理,那么就能理解工具方法的实质.它是定义在jQuery构造函数上的方法,即jQuery.method(),所以可以直接使用.而那些操作元素的方法,是定义在构造函数的prototype对象上的方法,即jQuery.prototype.method(),所以必须生成实例(即选中元素)后使用.把工具方法理解成像javascript原生函数那样可以直接使用的方法就行了.下面将

常用js方法整理common.js

项目中常用js方法整理成了common.js var h = {}; h.get = function (url, data, ok, error) { $.ajax({ url: url, data: data, dataType: 'json', success: ok, error: error }); } h.post = function (url, data, ok, error) { $.ajax({ url: url, data: data, type: 'post', data

java常用工具方法2

/* * Copyright 2005 Joe Walker * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LI

文件操作常用工具方法

写字节到文件: /** * 工具方法,写bytes到文件中 如果写入过程出现异常就删除文件 * * @param bytes * @param file */ public static void writeBytesToFile(byte[] bytes, File file) { RandomAccessFile access = null; try { access = new RandomAccessFile(file, "rw"); access.write(bytes);

angularJs中的常用工具方法

前面说过在angularJs中使用 angular.module() 法可创建一个angularJs模块.除此之外,angularJs还提供了一些工具方法供我们使用. angular.isArray() //判断传入的参数是不是数组,是则返回true 否则返回false angular.isDate() //判断传入的参数是不是时间对象,是则返回true,否则返回false angular.isFunction() //判断传入的参数是不是函数,是则返回true,否则返回false angula

Python学习之==&gt;常用字符串方法

# 常用字符串方法 a = '\n 字 符 串 \n\n'c = a.strip() #默认去掉字符串两边的空格和换行符c = a.lstrip() #默认去掉字符串左边的空格和换行符c = a.rstrip() #默认去掉字符串右边的空格和换行符 words1 = 'day is a wonderful day'words2 = 'http://baidu.COM'print(words1.strip('day')) #如果strip方法指定一个值的话,那么会在字符串两边去掉这个值print(

JavaScript中一些常用的方法整理

当前时间和输入时间比较 var timeLong = Date.parse(new Date());//当前时间var t1 = Date.parse($("#returnTime2").val().replace(/-/g, "/")); timeLong是通过js获取当前时间 t1 火狐不支持2012-1-1这种格式,所以需要转换一下. 替换所有要替换的文字 replaceAll String.prototype.replaceAll = function (s

javascript中最最最常用的方法封装

javascript 常用方法的封装,小编持续升级中... 方法封装(js原生): 一.Object 类型 MHQ.ajaxUtils 定义一个ajax工具类 ajax 定义一个ajax工具函数 get 方法 post 方法 MHQ.elementUtils DOM元素工具类 replaceClassName 替换字符串,设置className属性 getInnerText 获取DOM元素内部文本的兼容方法 setInnerText 设置DOM元素内部文本的兼容方法 getNextElement