2016-07-22 12 views
0

浮動小数点数を浮動小数点数を文字列に変換するために必要な最小有効桁数(dtoa() with Cの4)を使用する唯一の方法として、次のコードを用意しました。動的文字列を使用したsprintf()

$i = 14; 
do { 
    $str = sprintf("%.{$i}e", $x); 
    $i++; 
} while ($x != (float) $str); 

それは、引数に対してそれをチェックできるようにsprintf()への最初のパラメータは文字列リテラルであることを期待しているためエラーを報告型チェッカーハック。私はこの行のためにそれをオフにする方法はありますか?

私は同じことを達成する別の方法がありますか?おそらくNumberFormatterクラスを使用していますか?

答えて

1

タイプチェッカーはvarious methods of suppressing errorsです。この場合、最も適切なのはおそらくHH_IGNORE_ERRORで、この特定のエラーを抑制します。

書かれているように、コードではTyping[4110] Invalid argumentのようなエラーが発生します。この場合には、「4110」のエラーコードを取り、無視注釈を追加するためにそれを使用する:

/* HH_IGNORE_ERROR[4110] Allow dynamic sprintf() explain explain etc */ 
$str = sprintf("%.{$i}e", $x); 

私はあなたのエラーコードは、おそらく正確に4110だと思うが、私は私の前に型チェッカーを持っていません確実に確認するには、エラーメッセージの正しいコードを使用してください。

テクニカルな理由から、パーサーはHH_IGNORE_ERRORについてかなり厄介であることに注意してください。最後に]の後になるまで、上記の余分な空白がないブロックスタイルのコメントでなければなりません。あなたが説明しているコメントで好きなように多く。

関連する問題