回答編集履歴

1

小数点なしの10の倍数の時、右の0を消してしまうバグ修正

2018/08/11 13:51

投稿

namda
namda

スコア705

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] . '.' . rtrim(substr($exp[1],0,$n),'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 )),'.0'));//スマートそうだけど丸め発生
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