在PHP中获取float的小数部分的最佳方法是什么?

tkr*_*iel 48 php

简单的一个:你如何在PHP中找到浮点数的小数部分?例如,如果我的值为1.25,我想返回0.25.

nlu*_*oni 71

$x = $x - floor($x)
Run Code Online (Sandbox Code Playgroud)

  • $ x = fmod($ x,1); (89认同)
  • 作为对已接受答案的评论,它更有可能被看到,因此更有用. (13认同)
  • @primo:把你的评论写成答案,你应该提高你的声誉!:) (5认同)

Ala*_*orm 14

不要忘记你不能相信浮点运算是100%准确的.如果您对此感到担心,您将需要查看BCMath任意精度数学函数.

$x = 22.732423423423432;
$x = bcsub(abs($x),floor(abs($x)),20);
Run Code Online (Sandbox Code Playgroud)

你也可以自己破解这个字符串

$x = 22.732423423423432;    
$x = strstr ( $x, '.' );
Run Code Online (Sandbox Code Playgroud)


san*_*mai 13

$x = fmod($x, 1);
Run Code Online (Sandbox Code Playgroud)

这是一个演示:

<?php
$x = 25.3333;
$x = fmod($x, 1);
var_dump($x);
Run Code Online (Sandbox Code Playgroud)

应该ouptut

double(0.3333)
Run Code Online (Sandbox Code Playgroud)

信用.


Jer*_*ten 9

如果数字为负数,则必须这样做:

 $x = abs($x) - floor(abs($x));
Run Code Online (Sandbox Code Playgroud)


Mic*_*ick 8

nlucaroni提供的答案仅适用于正数.适用于正数和负数的可能解决方案是:

$x = $x - intval($x)
Run Code Online (Sandbox Code Playgroud)