Каков наилучший способ получить дробную часть float в PHP?

Простой: как вы найдете дробную часть числа с плавающей запятой в PHP? Например, если у меня значение 1,25, я хочу вернуть 0.25.

Solutions Collecting From Web of "Каков наилучший способ получить дробную часть float в PHP?"

$x = $x - floor($x) 

Не забывайте, что вы не можете доверять арифметике с плавающей запятой, чтобы быть на 100% точным. Если вас это волнует, вам нужно взглянуть на функции математической точности произвольной точности BCMath .

 $x = 22.732423423423432; $x = bcsub(abs($x),floor(abs($x)),20); 

Вы также можете взломать шнур самостоятельно

 $x = 22.732423423423432; $x = strstr ( $x, '.' ); 

Если, если число отрицательное, вам нужно будет сделать это:

  $x = abs($x) - floor(abs($x)); 

Ответ, предоставленный nlucaroni, будет работать только для положительных чисел. Возможное решение, которое работает как для положительных, так и для отрицательных чисел:

 $x = $x - intval($x) 
 $x = fmod($x, 1); 

Вот демо:

 <?php $x = 25.3333; $x = fmod($x, 1); var_dump($x); 

Если надо

 double(0.3333) 

Кредит.

Мои навыки PHP отсутствуют, но вы можете минус результат полу от исходного номера

Однако, если вы имеете дело с чем-то вроде шума perlin или другого графического представления, решение, которое было принято, является правильным. Это даст вам дробную часть от более низкого числа.

то есть:

  • .25 : 0 является целым числом, дробная часть равна .25
  • -.25 : -1 – целое число ниже, дробная часть – .75

С другими решениями вы будете повторять 0 как целое число ниже, и, что еще хуже, вы получите обратные дробные значения для всех отрицательных чисел.

Некоторые из предыдущих ответов являются частичными. Полагаю, это то, что вам нужно для решения всех ситуаций:

 function getDecimalPart($floatNum) { return abs($floatNum - intval($floatNum)); } $decimalPart = getDecimalPart($floatNum);