6

PHPで数値を小数点で割るにはどうすればよいですか?

$ num=15/4です。これは$numを3.75に変えます。3つと75の部分を分割したいので、$ int=3と$dec=75です。私の機能しないコードは次のとおりです。

$num = 15/4; // or $num = 3.75;
list($int, $dec) = split('.', $num);

しかし、その結果、$intと$decは空になります。

前もって感謝します。

4

8 に答える 8

23

数値をexplode10 進数で表現すると、精度が失われます。よろしければ、それで構いません (テキスト表現については問題ありません)。ロケールを考慮してください。私たちベルギー人はコンマを使用します (少なくとも非プログラミングのもの:)。

気にしない場合(計算など)は、次のfloor関数を使用できます。

$num = 15/4
$intpart = floor( $num )    // results in 3
$fraction = $num - $intpart // results in 0.75

注: これは正の数の場合です。負の数の場合、符号を反転し、正のアプローチを使用して、int 部分の符号を再度反転できます。

于 2009-01-05T12:24:09.300 に答える
7

爆発してみてください

list($int,$dec)=explode('.', $num);

正規表現ベースの分割を実際に使用する必要はないためです。スプリットは「。」として機能していませんでした。リテラル一致を提供するには、文字をエスケープする必要があります。

于 2009-01-05T11:44:40.423 に答える
6
$num = 15/4; // or $num = 3.75;
list($int, $dec) = explode('.', $num);
于 2009-01-05T11:43:26.993 に答える
4
$int = $num > 0 ? floor($num) : ceil($num);
$dec = $num - $int;

(他の回答のように)負の$decときに正になりたい場合は、次のようにします。$num

$dec = abs($num - $int);
于 2009-01-05T12:08:24.230 に答える
2
$num = 3.75;
$fraction = $num - (int) $num;
于 2013-05-02T20:57:50.310 に答える
1
$num = 15/4;
substr(strrchr($num, "."), 1)
于 2012-04-03T22:29:47.543 に答える
0

精度を落としたくない場合は、次を使用できます。

$number = 10.10;
$number = number_format($number, 2, ".", ",");
sscanf($number, '%d.%d', $whole, $fraction);

// you will get $whole = 10, $fraction = 10
于 2014-09-25T09:59:12.673 に答える