(Jquery)避免数据相加小数点后产生多位数和计算精度损失

/**
 * 加法运算,避免数据相加小数点后产生多位数和计算精度损失。
 *
 * @param num1加数1 | num2加数2
 */
function numAdd(num1, num2) {
 var baseNum, baseNum1, baseNum2;
 try {
  baseNum1 = num1.toString().split(".")[1].length;
 } catch (e) {
  baseNum1 = 0;
 }
 try {
  baseNum2 = num2.toString().split(".")[1].length;
 } catch (e) {
  baseNum2 = 0;
 }
 baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
 return (num1 * baseNum + num2 * baseNum) / baseNum;
};
/**
 * 加法运算,避免数据相减小数点后产生多位数和计算精度损失。
 *
 * @param num1被减数  |  num2减数
 */
function numSub(num1, num2) {
 var baseNum, baseNum1, baseNum2;
 var precision;// 精度
 try {
  baseNum1 = num1.toString().split(".")[1].length;
 } catch (e) {
  baseNum1 = 0;
 }
 try {
  baseNum2 = num2.toString().split(".")[1].length;
 } catch (e) {
  baseNum2 = 0;
 }
 baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
 precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2;
 return ((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision);
};
/**
 * 乘法运算,避免数据相乘小数点后产生多位数和计算精度损失。
 *
 * @param num1被乘数 | num2乘数
 */
function numMulti(num1, num2) {
 var baseNum = 0;
 try {
  baseNum += num1.toString().split(".")[1].length;
 } catch (e) {
 }
 try {
  baseNum += num2.toString().split(".")[1].length;
 } catch (e) {
 }
 return Number(num1.toString().replace(".", "")) * Number(num2.toString().replace(".", "")) / Math.pow(10, baseNum);
};
/**
 * 除法运算,避免数据相除小数点后产生多位数和计算精度损失。
 *
 * @param num1被除数 | num2除数
 */
function numDiv(num1, num2) {
 var baseNum1 = 0, baseNum2 = 0;
 var baseNum3, baseNum4;
 try {
  baseNum1 = num1.toString().split(".")[1].length;
 } catch (e) {
  baseNum1 = 0;
 }
 try {
  baseNum2 = num2.toString().split(".")[1].length;
 } catch (e) {
  baseNum2 = 0;
 }
 with (Math) {
  baseNum3 = Number(num1.toString().replace(".", ""));
  baseNum4 = Number(num2.toString().replace(".", ""));
  return (baseNum3 / baseNum4) * pow(10, baseNum2 - baseNum1);
 }
};
时间: 2024-10-28 19:42:35

(Jquery)避免数据相加小数点后产生多位数和计算精度损失的相关文章

显示的数据,小数点后保留2位

1. GridView中用DataFormatString="{0:F}" <asp:GridView ID="gvPartDetail" runat="server" AutoGenerateColumns="False" CellPadding="4" Font-Names="Arial" Font-Size="10pt" AllowPaging="

C++ Ouput Exactly 2 Digits After Decimal Point 小数点后保留三位数字

在C++编程中,有时候要求我们把数据保留小数点后几位,或是保留多少位有效数字等等,那么就要用到setiosflags和setprecision函数,记得要包含头文件#include <iomanip>,请参考下面的示例: #include <iostream> #include <iomanip> // Need this using namespace std; int main() { float a = 4, b = 3, c = 2; cout <<

例4.10 POJ3525/LA3890离海最远的点 半平面交 + 二分法 + double小数点后有效位数处理方式/printf与g++、c++的问题

0) 题意: 题意很简单,给出一张四面环海的岛屿的地图,岛屿用顶点表示(题目数据保证岛屿是凸多边形--所谓凸多边形与凹多边形区别,凸多边形就是把一个多边形任意一边向两方无限延长成为一条直线,如果多边形的其他各边均在此直线的同旁,那么这个多边形就叫做凸多边形.)找出岛屿上距离大海距离最长的一个点.即求岛屿上距离岛屿各条边边中最短的距离是所有点中最长的那个点.即求岛屿中的内接圆的圆心点.输出这个点到岛屿的边的最短的距离.即该岛屿中那个内接圆的半径... 分析: 半平面交求内核点集是一个点的情况(用精

Java中double类型的数据精确到小数点后两位

Java中double类型的数据精确到小数点后两位 多余位四舍五入,四种方法 一: double f = 111231.5585;BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); 二: new java.text.DecimalFormat("#.00").format(3.1415926) 三: double d = 3.1415926

iOS 当请求到的数据是double类型,会失去精准度,并且去掉小数点后的0

首先请求到的数据都会变成字符串,先将字符串转化为double类型 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Menlo; color: #ffffff } span.s1 { color: #de38a6 } span.s2 { } span.s3 { color: #00b1ff } double fdouble = [str doubleValue]: 然后再设置小数点后的位数 [NSString stringWithForma

Double类型的数据四舍五入保留小数点后两位

4种方法,都是四舍五入,例: import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public class format { double f = 111231.5585; public void m1() { BigDecimal bg = new BigDecimal(f); double f1 = bg.setScale(2, BigDecimal.ROUND

对数值数据的格式化处理(保留小数点后N位)

项目中有时会遇到对数值部分进行保留操作,列如保留小数点后2位,所有的数据都按这种格式处理, //保留小数点后2位,都按这种格式处理,没有补0 DecimalFormat df = new DecimalFormat("0.00"); //没有小数,或者小数部分不足是用0来补 BigDecimal db1 = new BigDecimal(111); System.out.println(df.format(db1)); //下面比较奇怪,不论是字符串表示,还是数字表示,只要没有大于11

validate自定义验证,进行小数点后2位小数的验证(完美)

1.进行form表单提交(咱们这个表单提交的是数字) <form action="" method="post" id="form" target="_blank"> <input class="form-control" type="text" id="cash" name="cash"> <button type=

js小数点后保留两位

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Test</title> <script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>