1.5
、1.6666
またはの番号を持ってい1.777
ます。
これらの float 値を int 部分から抽出するにはどうすればよいですか? 丸めるだけでなく、異なる変数に分けます。
期待される出力は$var1 = 1
と$var2 = 0.5
です1.5
。
1.5
、1.6666
またはの番号を持ってい1.777
ます。
これらの float 値を int 部分から抽出するにはどうすればよいですか? 丸めるだけでなく、異なる変数に分けます。
期待される出力は$var1 = 1
と$var2 = 0.5
です1.5
。
最初に整数部分を取得し、それを元から減算します。
$original = 1.6666;
$intPortion = intval($original);
$floatPortion = $original - $intPortion;
以下を使用することもできます。
$var = 1.5;
$arr = explode('.', $var);
$wholeNum = $arr[0]; // 1
$decimalNum = $arr[1]; // 5
これは複数の方法で行うことができます。言いましょう$v = 1.56;
:
例 #1
$m = explode('.', $v);
$v1 = $m[0];
$v2 = '0.' . $m[1];
print_r("#1: \$v1 = $v1; \$v2 = $v2;\n");
例 #2
preg_match('~^(\d+)\.(\d+)$~', $v, $m);
$v1 = $m[1];
$v2 = '0.' . $m[2];
print_r("#2: \$v1 = $v1; \$v2 = $v2;\n");
例 #3
$v1 = substr($v, 0, strpos($v, '.'));
$v2 = '0.' . substr($v, strpos($v, '.') + 1);
print_r("#3: \$v1 = $v1; \$v2 = $v2;\n");
例 #4
$v1 = floor($v1);
$v2 = $v - $v1;
print_r("#4: \$v1 = $v1; \$v2 = $v2;\n");
すべての例が出力されます >
#1: $v1 = 1; $v2 = 0.56;
#2: $v1 = 1; $v2 = 0.56;
#3: $v1 = 1; $v2 = 0.56;
#4: $v1 = 1; $v2 = 0.56;
大きな浮動小数点数に注意してください。それらについては、 BC Math 関数を参照してください。
それらを文字列として解釈し、preg_splitを使用します
これはおそらくあなたの最善の策です:
$float = 1.666;
$remainder = fmod($float, 1);
$integer = intval($float, 10);