首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Javascript使浮点数的精度保持一致

如何使用Javascript使浮点数的精度保持一致
EN

Stack Overflow用户
提问于 2015-03-17 14:34:42
回答 3查看 65关注 0票数 0

我在Javascript中有两个高精度和低精度的浮点数(事先不知道),例如:

代码语言:javascript
运行
复制
1545.165 
12.15364613

如何将高精度数字与低精度数字相乘?在我们的情况下

代码语言:javascript
运行
复制
12.154
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-17 14:36:52

您可以围绕toFixed()函数进行争论。

语法: <number>.toFixed(precision)

例如:

12.15364613.toFixed(3)给出12.154

但是为了让它在你的情况下起作用,你想做这样的事情:

警告未经测试的代码,我只想给您一个大致的概念,如何可以这样做,当然,下面的代码可以改进。

代码语言:javascript
运行
复制
var num1 = 12.15364613;
var num1Str = (12.15364613).toString();
var num1Precision = parseInt(num1Str.substring(num1Str.indexOf('.')).length - 1);

var num2 = 12.154;
var num2Str = (12.154).toString();
var num2Precision = parseInt(num2Str.substring(num2Str.indexOf('.')).length - 1);

if(num1Precision > num2Precision){
    num1 = num1.toFixed(num2Precision);
} else{
    num2 = num2.toFixed(num1Precision);
}
票数 2
EN

Stack Overflow用户

发布于 2015-03-17 16:12:13

纯数学解

为了获得未知数(变量)的精度,可以使用这样的函数:

代码语言:javascript
运行
复制
function getPrecision(x) {
    // i < 10 - just to avoid infinite looping
    // (which may occur if x is a real number like PI)
    // x - Math.floor(x) + (x < 0? 1 : 0) is a fractional part of x
    for (var i = 0; i < 10 && x - Math.floor(x) + (x < 0? 1 : 0) > 0; i++, x *= 10) ;
    return i;
}

所以代码应该是这样的:

代码语言:javascript
运行
复制
// array of given numbers:
aVals = [1545.165, 12.15364613];
// array of numbers' precisions:
var aPre = aVals.map(getPrecision);
// find the least precision:
var minPre = Math.min.apply(null, aPre);

// result array of fixed numbers with the same precision:
var aValsFixed = aVals.map(function(v) { return v.toFixed(minPre); });
票数 1
EN

Stack Overflow用户

发布于 2015-03-17 14:40:39

你是说像这样的事?

代码语言:javascript
运行
复制
var number = 1.2333445454;

var n = number.toFixed(3);

alert(n);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29101892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档