回答編集履歴
1
小数点なしの10の倍数の時、右の0を消してしまうバグ修正
test
CHANGED
@@ -26,21 +26,15 @@
|
|
26
26
|
|
27
27
|
$exp = explode('.',sprintf("%.{$f}f",$origin));
|
28
28
|
|
29
|
-
if(count($exp) === 1){
|
30
|
-
|
31
|
-
return $exp[0];//小数点以下が無いとき
|
32
|
-
|
33
|
-
}
|
34
|
-
|
35
|
-
return $exp[0] . '.' .
|
29
|
+
return rtrim(rtrim($exp[0] . '.' . substr($exp[1],0,$n),'0'),'.');
|
36
30
|
|
37
31
|
};
|
38
32
|
|
39
33
|
|
40
34
|
|
41
|
-
var_dump($a($origin,$n));
|
35
|
+
var_dump($a($origin,$n));
|
42
36
|
|
43
|
-
var_dump(rtrim(strval(floor( $origin * pow( 10 , $n ) )/ pow( 10 , $n )),'
|
37
|
+
var_dump(rtrim(rtrim(strval(floor( $origin * pow( 10 , $n ) )/ pow( 10 , $n )),'0'),'.'));
|
44
38
|
|
45
39
|
|
46
40
|
|
@@ -48,7 +42,7 @@
|
|
48
42
|
|
49
43
|
//string(8) "10.00129"
|
50
44
|
|
51
|
-
//スマートそうだけど丸め発生
|
45
|
+
//スマートそうだけど丸め発生(そもそも10の時、尻の0削ってしまい1になるから使えない)
|
52
46
|
|
53
47
|
//string(10) "10.0012899"
|
54
48
|
|