teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

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

2018/08/11 13:51

投稿

namda
namda

スコア705

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