PHP: получите количество десятичных цифр

Существует ли простой способ определить количество десятичных разрядов в (n) целочисленном/двойном значении в PHP? (то есть, без использования explode)

45
задан Machavity 23 June 2018 в 22:34
поделиться

5 ответов

$str = "1.23444";
print strlen(substr(strrchr($str, "."), 1));
74
ответ дан 26 November 2019 в 21:02
поделиться
$decnumber = strlen(strstr($yourstr,'.'))-1
1
ответ дан 26 November 2019 в 21:02
поделиться

Что-то вроде:

<?php

$floatNum = "120.340304";
$length = strlen($floatNum);

$pos = strpos($floatNum, "."); // zero-based counting.

$num_of_dec_places = ($length - $pos) - 1; // -1 to compensate for the zero-based count in strpos()

?>

Это процедурно, беспорядочно, и я бы не советовал использовать его в производственном коде. Но это должно помочь вам начать.

2
ответ дан 26 November 2019 в 21:02
поделиться
function numberOfDecimals($value)
{
    if ((int)$value == $value)
    {
        return 0;
    }
    else if (! is_numeric($value))
    {
        // throw new Exception('numberOfDecimals: ' . $value . ' is not a number!');
        return false;
    }

    return strlen($value) - strrpos($value, '.') - 1;
}


/* test and proof */

function test($value)
{
    printf("Testing [%s] : %d decimals\n", $value, numberOfDecimals($value));
}

foreach(array(1, 1.1, 1.22, 123.456, 0, 1.0, '1.0', 'not a number') as $value)
{
    test($value);
}

Вывод:

Testing [1] : 0 decimals
Testing [1.1] : 1 decimals
Testing [1.22] : 2 decimals
Testing [123.456] : 3 decimals
Testing [0] : 0 decimals
Testing [1] : 0 decimals
Testing [1.0] : 0 decimals
Testing [not a number] : 0 decimals
11
ответ дан 26 November 2019 в 21:02
поделиться

Вы можете попробовать преобразовать его в i nt, вычитая это из своего числа, а затем считая, что осталось.

11
ответ дан 26 November 2019 в 21:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: