質問

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になります。

事前に感謝します。

役に立ちましたか?

解決

数値の10進表現を explode すると、精度が失われます。気にしないのであれば、気にしないでください(テキスト表現でも構いません)。ロケールを考慮してください!ベルギー人はコンマを使用します(少なくともプログラミング以外のものは:)。

やる気にした場合(計算など)、 floor 関数を使用できます:

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

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

他のヒント

爆発

をお試しください
list($int,$dec)=explode('.', $num);

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

$num = 15/4; // or $num = 3.75;
list($int, $dec) = explode('.', $num);
$int = $num > 0 ? floor($num) : ceil($num);
$dec = $num - $int;

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

$dec = abs($num - $int);
$num = 3.75;
$fraction = $num - (int) $num;
$num = 15/4;
substr(strrchr($num, "."), 1)

精度を失いたくない場合は、これらを使用できます:

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

// you will get $whole = 10, $fraction = 10

これは正の数と負の数で機能します:

$num = 5.7;
$whole = (int) $num;         //  5
$frac  = $num - (int) $num;  // .7
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top