公众号网站开发用什么模板,明星网页设计模板,林业公司网站模版,wordpress 技术文档JavaScript 中执行浮点数运算时可能会遇到精度丢失的问题。这通常是因为浮点数的表示遵循IEEE 754标准#xff0c;而这种表示法只能精确地表示有限的数字。对于大多数程序员来说#xff0c;这不是一个问题#xff0c;因为它允许计算机处理超出精度范围之外的数字。然而…JavaScript 中执行浮点数运算时可能会遇到精度丢失的问题。这通常是因为浮点数的表示遵循IEEE 754标准而这种表示法只能精确地表示有限的数字。对于大多数程序员来说这不是一个问题因为它允许计算机处理超出精度范围之外的数字。然而如果需要高精度的计算结果例如货币计算就需要采取措施避免精度丢失。
解决两个数相加精度丢失问题
function floatAdd(a, b) {var c, d, e;if(undefineda||nulla||a||isNaN(a)){a0;}if(undefinedb||nullb||b||isNaN(b)){b0;}try {c a.toString().split(.)[1].length;} catch (f) {c 0;}try {d b.toString().split(.)[1].length;} catch (f) {d 0;}e Math.pow(10, Math.max(c, d));return (floatMul(a, e) floatMul(b, e)) / e;
}解决两个数相减精度丢失问题
function floatSub(a, b) {var c, d, e;if(undefineda||nulla||a||isNaN(a)){a0;}if(undefinedb||nullb||b||isNaN(b)){b0;}try {c a.toString().split(.)[1].length;} catch (f) {c 0;}try {d b.toString().split(.)[1].length;} catch (f) {d 0;}e Math.pow(10, Math.max(c, d));return (floatMul(a, e) - floatMul(b, e)) / e;
}解决两个数相乘精度丢失问题
function floatMul(a, b) {var c 0,d a.toString(),e b.toString();try {c d.split(.)[1].length;} catch (f) {}try {c e.split(.)[1].length;} catch (f) {}return Number(d.replace(., )) * Number(e.replace(., )) / Math.pow(10, c);
}解决两个数相除精度丢失问题
function floatDiv(a, b) {var c, d, e 0,f 0;try {e a.toString().split(.)[1].length;} catch (g) {}try {f b.toString().split(.)[1].length;} catch (g) {}return c Number(a.toString().replace(., )), d Number(b.toString().replace(., )), floatMul(c / d, Math.pow(10, f - e));
}