如何在PHP中用点后的10个数字计数数字

我想做一个简单的计数器,它将每毫秒计算该数字,再加上它在1小时内达到某个总数。问题在于计算点后面有十个数字的微小数字,这不正确。

例如,我的电话号码是“ 0.001”。

我想在几分钟内计算出这个数字。我每1分钟进行0.001 / 60 = 0.0000166667次。如果每1小时乘0.0000166667 * 60 = 0.0010000020

我想以秒为单位计算以上数字。

我每1秒做一次0.0000166667 / 60 = 0.0000002778。如果每1分钟有多个0.0000002778 * 60 = 0.0000166680。但是结果与0.0000166667不同。

我要计算以上数字(以毫秒为单位)。我每1毫秒做0.0000002778 / 1000 = 0.0000000003。如果I每秒有多个0.0000000003 * 1000 = 0.0000003000同样,结果不同于0.0000002778。

<?php

$my_number = 0.001; 

$per_one_minute = 0.001 / 60;
echo number_format($per_one_minute,10)."<br>";
// result 0.0000166667
$reverse = 0.0000166667 * 60;
// expecting 0.0010000000
// result 0.0010000020

$per_one_second = 0.0000166667 / 60;
echo number_format($per_one_second,10)."<br>";
// result 0.0000002778
$reverse = 0.0000002778 * 60;
// expecting 0.0000166667
// result 0.0000166680

$per_one_millisecond = 0.0000002778 / 1000;
echo number_format($per_one_millisecond,10)."<br>";
// result 0.0000000003
$reverse = 0.0000000003 * 1000;
// expecting 0.0000002778
// result 0.0000003000

?>

期望的数字与结果不同,这是有问题的。我在JavaScript中像这样使用PHP计算:

function roundNumberV1(num,scale) {
    if (!("" + num).includes("e")) {
        return +(Math.round(num + "e+" + scale) + "e-" + scale);
    } else {
        var arr = ("" + num).split("e");
        var sig = ""
        if (+arr[1] + scale > 0) {
            sig = "+";
        }
        var i = +arr[0] + "e" + sig + (+arr[1] + scale);
        var j = Math.round(i);
        var k = +(j + "e-" + scale);
        return k;
    }
}

function printNumbers(from,to,step) {
    let current = from;
    let current1 = 1;

    let timerId = setInterval(function() {
        document.getElementById("mynum").innerHTML = roundNumberV1(current,10);
        if (current >= to) {
            clearInterval(timerId);
        }
        current += step;
    },100);
}

其中“ from”参数是PHP计算的数字,“ to”是要达到的数字(在我们的示例中为0.001),“ step”是每1毫秒的数字。我认为,如果PHP计算正确,那么Javascript将在给定的时间内显示正确的计算数字。

dongxinshuai 回答:如何在PHP中用点后的10个数字计数数字

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3128121.html

大家都在问