Javascript中浮点数相乘的一个解决方法
Javascript中的浮点数相乘是个很有意思的事情。
浮点数相乘有很多方式,下面是我给出的一个我自己认为不错的解决方案:
代码如下:
function FxF(f1, f2) {
f1 += '';
f2 += '';
var f1Len = f1.split('.')[1].length,
f2Len = f2.split('.')[1].length;
if (f1Len) {
f1 = f1.replace('.', '');
}
if (f2Len) {
f2 = f2.replace('.', '');
}
return f1 * f2 / Math.pow(10, f1Len + f2Len);
};
基本思想
基本的思想就是把浮点数全部变成整数,然后除以等值的10的N阶次方。N为(两个浮点数的后面长度之和)。
相关推荐
-
JavaScript浮点数及运算精度调整详解
JavaScript 只有一种数字类型 Number,而且在Javascript中所有的数字都是以IEEE-754标准格式表示的.浮点数的精度问题不是JavaScript特有的,因为有些小数以二进制表示位数是无穷的. 十进制 二进制 0.1 0.0001 1001 1001 1001 - 0.2 0.0011 0011 0011 0011 - 0.3 0.0100 1100 1100 1100 - 0.4
-
深入理解JavaScript中的浮点数
js只有一种数值型数据类型,不管是整数还是浮点数,js都把归为数字. typeof 17; // "number" typeof 98.6; // "number" typeof –2.1; // "number" js中的所有数字都是双精度浮点数.是由IEEE754标准制定的64位编码数字(这个是什么东东,不知道,回头查一下吧) 那么js是如何表达整数的,双精度浮点数可以完美地表示高达53位精度的整数(没有什么概念,没处理过多大的数据,没用
-
js判断输入是否为正整数、浮点数等数字的函数代码
1.下面列出了一些判读数值类型的正则表达式 复制代码 代码如下: /^\d+$/ //非负整数(正整数 + 0) /^[0-9]*[1-9][0-9]*$/ //正整数 /^((-\d+)|(0+))$/ //非正整数(负整数 + 0) /^-[0-9]*[1-9][0-9]*$/ //负整数 /^-?\d+$/ //整数 /^\d+(\.\d+)?$/ //非负浮点数(正浮点数 + 0) /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0
-
javascript基于牛顿迭代法实现求浮点数的平方根【递归原理】
本文实例讲述了javascript基于牛顿迭代法实现求浮点数的平方根.分享给大家供大家参考,具体如下: 今天在网上看到一则利用牛顿迭代法求浮点数的平方根的方法,发现很好,比一些语言自带的sqrt方法运行要快,在这里备份一下,以待后用,这里稍微做了些改动. 首先是牛顿迭代法原理: 比如我们要求a的平方根,首先随便猜一个近似值x,然后不断令x等于x和a/x的平均数,迭代几次后x的值就已经相当精确了. 如我们要求的数学假设为 a=7, var x=a; ( 7 + 7/7 ) / 2 = 3.642
-
js浮点数精确计算(加、减、乘、除)
复制代码 代码如下: <SPAN style="FONT-SIZE: 18px">//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显.这个函数返回较为精确的加法结果. //调用:accAdd(arg1,arg2) //返回值:arg1加上arg2的精确结果 function accAdd(arg1,arg2){ var r1,r2,m; try{r1=arg1.toString().split(".&
-
JavaScript检查数字是否为整数或浮点数的方法
本文实例讲述了JavaScript检查数字是否为整数或浮点数的方法.分享给大家供大家参考.具体如下: 检查是否为整数: function isInt(n) { return typeof n === 'number' && n % 1 == 0; } // or ,this support ie3 function isInt(n) { return typeof n === 'number' && parseFloat(n) == parseInt(n, 10) &
-
在JavaScript中使用开平方根的sqrt()方法
这个方法返回一个数的平方根.如果数的值是负的,开方返回NaN. 语法 Math.sqrt( x ) ; 下面是参数的详细信息: x: 一个数字 返回值: 返回一个数字的正弦值. 例子: <html> <head> <title>JavaScript Math sqrt() Method</title> </head> <body> <script type="text/javascript"> var
-
JavaScript实现算术平方根算法-代码超简单
前几天看见了一个来自雷神之槌的平方根源码,原理多方有介绍,不赘述. 源码是c语言写的,我思考后发现这样的算法在javascript中也是可以完成的. function InvSqrt(x){ var h=0.5*x; var b=new ArrayBuffer(4); var d=new DataView(b,0); d.setFloat32(0,x); var i=d.getInt32(0); i=0x5f375a86-(i>>1); d.setInt32(0,i); var r=d.get
-
javascript将浮点数转换成整数的三个方法
Summary 暂时我就想到3个方法而已.如果读者想到其他好用方法,也可以交流一下 parseInt 位运算符 Math.floor Math.ceil Description 一.parseInt 1. 实例 parseInt("13nash");//13 parseInt("")// NaN parseInt("0xA") //10(十六进制) parseInt(" 13")//13 parseInt("070&
-
javaScript实现浮点数转十六进制字符
最近一个嵌入式项目中需要WEB功能,因此想到利用HTML+JavaScript实现一些参数配置功能,参数由JavaScript生成十六进制数据,通过POST提交给单片机,然后再直接使用,以充分利用浏览器的计算能力. 由于JavaScript对浮点数的支持很弱,直接使用浮点数转十六进制功能,双不能实现平常在C语言中实现的4字节的存储表示法,通过搜索,并没有找到相关功能代码,在Node.js的Buffer类可以实现此功能,但又没办法使用(单片机存储空间有限),也没办法找到具体是如何实现的(看不太懂)
-
js浮点数保留两位小数点示例代码(四舍五入)
复制代码 代码如下: var changeTwoDecimal_f= function (floatvar){ var f_x = parseFloat(floatvar); if (isNaN(f_x)){ return '0.00'; } var f_x = Math.round(f_x*100)/100; var s_x = f_x.toString(); var pos_decimal = s_x.indexO
随机推荐
- PHP 万年历实现代码
- ThinkPHP利用PHPMailer实现邮件发送实现代码
- 详解Lua中的数组概念知识
- jQuery左右滚动支持图片放大缩略图图片轮播代码分享
- JavaScript 判断指定字符串是否为有效数字
- Python中取整的几种方法小结
- .net调用存储过程详细介绍
- PHP中的socket_read和socket_recv区别详解
- GO语言的IO方法实例小结
- Mysql 原生语句中save or update 的写法汇总
- JS中常用的正则表达式
- 基于jquery实现图片上传本地预览功能
- Ruby中使用多线程队列(Queue)实现下载博客文章保存到本地文件
- MySQL中由load data语句引起死锁的解决案例
- System.Web中不存在类型或命名空间名称“Optimization”(是否缺少程序集引用?)
- spring MVC搭建及配置详解
- Android运用onTouchEvent自定义滑动布局
- 如何调用百度地图API实现手机自动定位
- 详解IntelliJ IDEA 自定义方法注解模板
- 浅谈Spring Cloud Ribbon的原理