相关疑难解决方法(0)

舍入到最多2位小数(仅在必要时)

我想最多舍入2位小数,但只在必要时.

输入:

10
1.7777777
9.1
Run Code Online (Sandbox Code Playgroud)

输出:

10
1.78
9.1
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做__CODE__

javascript decimal decimal-point rounding

2492
推荐指数
53
解决办法
220万
查看次数

你如何在Javascript中舍入到小数点后1位?

你可以将javascript中的数字舍入到小数点后的1个字符(正确舍入)吗?

我尝试了*10,round,/ 10但它在int的末尾留下了两位小数.

javascript rounding

344
推荐指数
11
解决办法
32万
查看次数

如何在javascript中舍入浮点数?

我需要一轮例如6.6886896.7,但它总是显示我7.

我的方法:

Math.round(6.688689);
//or
Math.round(6.688689, 1);
//or 
Math.round(6.688689, 2);
Run Code Online (Sandbox Code Playgroud)

但结果总是一样的7...我做错了什么?

javascript rounding

280
推荐指数
10
解决办法
30万
查看次数

Javascript toFixed不舍入

我正在使用javascript绑定到一些复选框,而toFixed(2)不是四舍五入.任何想法为什么它不四舍五入?例如,如果数字是859.385仅显示859.38而不是859.39.

我还读过,toFixed根据您使用的浏览器,可以进行不同的循环,任何人都知道如何解决这个问题,以便我的javascript计算与我的php计算相匹配?

var standardprice = parseFloat($('#hsprice_'+this.id.split('_')[1]).val());
var price =  parseFloat($('#hprice_'+this.id.split('_')[1]).val());
var discount =  parseFloat($('#hdiscount_'+this.id.split('_')[1]).val());
var deposit =  parseFloat($('#hdeposit_'+this.id.split('_')[1]).val());

var currSprice = parseFloat($('#hTotalSprice').val());
var currPrice = parseFloat($('#hTotalPrice').val());
var currDiscount = parseFloat($('#hTotalDiscount').val());
var currDeposit = parseFloat($('#hTotalDeposit').val());

currSprice += standardprice;
currPrice += price;
currDiscount += discount;
currDeposit += deposit;

$('#lblTotalSprice').text('$'+addCommas(currSprice.toFixed(2)));
$('#lblTotalPrice').text('$'+addCommas(currPrice.toFixed(2)));
$('#lblTotalDiscount').text('$'+addCommas(currDiscount.toFixed(2)));
$('#lblTotalDeposit').text('$'+addCommas(currDeposit.toFixed(2)));

$('#hTotalSprice').val(currSprice.toFixed(2));
$('#hTotalPrice').val(currPrice.toFixed(2));
$('#hTotalDiscount').val(currDiscount.toFixed(2));
$('#hTotalDeposit').val(currDeposit.toFixed(2));
Run Code Online (Sandbox Code Playgroud)

javascript

53
推荐指数
11
解决办法
7万
查看次数

在JavaScript中将浮点数转换为整数的最佳方法是什么?

在JavaScript中有几种不同的方法可以将浮点数转换为整数.我的问题是什么方法能提供最佳性能,最兼容,或被认为是最佳实践?

以下是我所知道的一些方法:

var a = 2.5;
window.parseInt(a); // 2
Math.floor(a);      // 2
a | 0;              // 2
Run Code Online (Sandbox Code Playgroud)

我相信那里还有其他人.建议?

javascript variables types

29
推荐指数
5
解决办法
3万
查看次数

Number.prototype.toFixed:在Internet Explorer中非常正确

考虑以下:

var x = 2.175;
console.log(x.toFixed(2));  // 2.17
Run Code Online (Sandbox Code Playgroud)

什么?不,这并不奇怪.这是相当明显的,请参阅:数字文字2.175实际上存储在内存中(通过IEEE-754规则)作为一个稍微小于2.175的值.这很容易证明:

console.log(x.toFixed(20)); // 2.17499999999999982236
Run Code Online (Sandbox Code Playgroud)

这就是它在32位Windows设置的最新版Firefox,Chrome和Opera中的工作原理.但那不是问题.

真正的问题是Internet Explorer 6(!)实际上是如何设法完成的 像人类一样:

var x = 2.175;
console.log(x.toFixed(2));  // 2.18
console.log(x.toFixed(20)); // 2.17500000000000000000
Run Code Online (Sandbox Code Playgroud)

好吧,我过度使用了:实际上我测试过的所有Internet Explorer(IE8-11,甚至是MS Edge!)的行为方式都是一样的.还是,WAT?

更新:它变得陌生:

x=1.0;while((x-=0.1) > 0) console.log(x.toFixed(20));

IE                        Chrome
0.90000000000000000000    0.90000000000000002220
0.80000000000000000000    0.80000000000000004441
0.70000000000000010000    0.70000000000000006661
0.60000000000000010000    0.60000000000000008882
0.50000000000000010000    0.50000000000000011102
0.40000000000000013000    0.40000000000000013323
0.30000000000000015000    0.30000000000000015543
0.20000000000000015000    0.20000000000000014988
0.10000000000000014000    0.10000000000000014433
0.00000000000000013878    0.00000000000000013878
Run Code Online (Sandbox Code Playgroud)

为什么差异 - 除了最后一个?为什么最后一个没有区别?x=0.1; while(x-=0.01)...顺便说一下,它非常相似:直到我们非常接近零,toFixed在IE中显然试图削减一些角落.

免责声明:我知道,浮点数学是有点缺陷.我不明白的是IE和浏览器世界其他部分之间的区别.

javascript floating-point internet-explorer

20
推荐指数
2
解决办法
2633
查看次数

JS跨浏览器的不一致/差异

浏览器之间存在大量DOM/CSS不一致.但浏览器之间存在多少核心JS差异?最近让我失望的是,在Firefox中,setTimeout回调函数会传递一个额外的参数(https://developer.mozilla.org/en/window.setTimeout).

此外,现在浏览器正在实现新的功能(例如,Array.map),如果你试图编写必须适用于所有浏览器的代码(甚至回到IE6),那么知道你能够/不能使用它会让人感到困惑.

是否有一个网站干净地组织这些类型的差异?

javascript

9
推荐指数
1
解决办法
3899
查看次数

破解到固定的实现

javascript的"Number.toFixed"的默认实现似乎有点破碎.

console.log((8.555).toFixed(2));    // returns 8.56
console.log((8.565).toFixed(2));    // returns 8.57
console.log((8.575).toFixed(2));    // returns 8.57
console.log((8.585).toFixed(2));    // returns 8.59
Run Code Online (Sandbox Code Playgroud)

我需要一种比这更一致的舍入方法.

在8.500和8.660之间的范围内,以下数字不能正确舍入.

8.575
8.635
8.645
8.655
Run Code Online (Sandbox Code Playgroud)

我已经尝试按如下方式修复原型实现,但它只有一半.任何人都可以建议任何可以使其更一致地工作的变化吗?

Number.prototype.toFixed = function(decimalPlaces) {
    var factor = Math.pow(10, decimalPlaces || 0);
    var v = (Math.round(this * factor) / factor).toString();
    if (v.indexOf('.') >= 0) {
        return v + factor.toString().substr(v.length - v.indexOf('.'));
    }
    return v + '.' + factor.toString().substr(1);
};
Run Code Online (Sandbox Code Playgroud)

javascript

7
推荐指数
2
解决办法
4700
查看次数

可靠的JS舍入数字与3个十进制数的toFixed(2)

我只是想整理一下1.275.toFixed(2),我期待的回报是1.28而不是1.27.

使用各种计算器和舍入​​到最接近的百分之一的简单方法,如果最后一个数字大于或等于五,它应该向上舍入.

如果这不能与toFixed(2)一起使用,那怎么办?

人们询问console.log(1.275.toFixed(2))是否打印掉1.28,这是一个快速截图MacOS Chrome版本55.0.2883.95(64位)

在此输入图像描述

javascript rounding tofixed

5
推荐指数
2
解决办法
1421
查看次数

在javascript中将数字舍入到一个小数

可能重复:
你如何在Javascript中舍入到1位小数?

以下代码显示在谷歌地图上显示的特定路线上的总覆盖距离.我设法将数字从公里转换为英里.这是函数的代码:

function computeTotalDistance(result) {
        var total = 0;
        var myroute = result.routes[0];
        for (i = 0; i < myroute.legs.length; i++) {
          total += myroute.legs[i].distance.value;
        }
        total = total *0.621371/ 1000.
        document.getElementById('total').innerHTML = total + ' mi';
Run Code Online (Sandbox Code Playgroud)

总计显示为41.76483039399999 mi.如何将total小数点四舍五入?

javascript math google-maps-api-3

3
推荐指数
2
解决办法
2万
查看次数

如何在javascript中获得1.450 = 1.5?(舍入到小数点后1位)

可能重复:
你如何在Javascript中舍入到1位小数?

我的值是1.450,我必须将它舍入到小数点后1位.

我希望在Javascript中1.450 = 1.5可以任何机构修复此请.

javascript

2
推荐指数
1
解决办法
668
查看次数

Javascript toFixed()未按预期工作

我正在使用toFixed但该方法无法按预期运行

parseFloat(19373.315).toFixed(2);

//19373.31   Chrome 
Run Code Online (Sandbox Code Playgroud)

预期产出:19373.32

parseFloat(9373.315).toFixed(2);
// 9373.32  Working fine
Run Code Online (Sandbox Code Playgroud)

为什么第一个例子向下舍入,而第二个例子向上舍入?

javascript

2
推荐指数
1
解决办法
116
查看次数

在Javascript中舍入到2位小数

我有一个下拉列表,其值为2位小数.

<label for="delivery">Delivery:</label>
<select id="delivery" name="delivery">
    <option value="1.50">Fast</option>
    <option value="2.50">Medium</option>
    <option value="3.50">Slow</option>
</select>  
Run Code Online (Sandbox Code Playgroud)

我如何在Javascript中调用它,我知道我必须在下面的某行使用toFixed(2),但我不确定在哪里放它.

var delivery = parseInt($('#delivery').val());
Run Code Online (Sandbox Code Playgroud)

另外,我会将它放在输出或计算中的div中,还是两者兼而有之?

约拿

javascript

0
推荐指数
1
解决办法
121
查看次数