回答編集履歴
1
小数点なしの10の倍数の時、右の0を消してしまうバグ修正
answer
CHANGED
@@ -12,18 +12,15 @@
|
|
12
12
|
}
|
13
13
|
$f = $n + 2;
|
14
14
|
$exp = explode('.',sprintf("%.{$f}f",$origin));
|
15
|
-
if(count($exp) === 1){
|
16
|
-
return $exp[0];//小数点以下が無いとき
|
17
|
-
}
|
18
|
-
return $exp[0] . '.' .
|
15
|
+
return rtrim(rtrim($exp[0] . '.' . substr($exp[1],0,$n),'0'),'.');
|
19
16
|
};
|
20
17
|
|
21
|
-
var_dump($a($origin,$n));
|
18
|
+
var_dump($a($origin,$n));
|
22
|
-
var_dump(rtrim(strval(floor( $origin * pow( 10 , $n ) )/ pow( 10 , $n )),'
|
19
|
+
var_dump(rtrim(rtrim(strval(floor( $origin * pow( 10 , $n ) )/ pow( 10 , $n )),'0'),'.'));
|
23
20
|
|
24
21
|
//泥臭い方法
|
25
22
|
//string(8) "10.00129"
|
26
|
-
//スマートそうだけど丸め発生
|
23
|
+
//スマートそうだけど丸め発生(そもそも10の時、尻の0削ってしまい1になるから使えない)
|
27
24
|
//string(10) "10.0012899"
|
28
25
|
|
29
26
|
```
|