2

私のコード:

$baseprice=1705000/1.1;
var_dump($baseprice);
$parseprice=intval($baseprice);
var_dump($parseprice);

結果 :

float(1550000) int(1549999)

ご覧のとおり、float から int に変換するときに 1 つの数字を失いました。どこにあるのでしょうか。この場合、データを失うことなく変換するための解決策は何ですか。ありがとうございます。

4

4 に答える 4

3

精度を失う浮動小数点数を使用しています (このリンクを参照してください)。

通貨を扱う場合は、整数を使用し、セント、ペンス、ペニヒスなどで作業します。表示直前に通貨フォーマットに変換します。

于 2013-10-08T04:00:27.057 に答える
3

解決策は以下のようになります

$baseprice=1705000/1.1;

var_dump($baseprice);

$parseprice=intval(ceil($baseprice));

var_dump($parseprice);

出力:

float(1550000) int(1550000)

于 2013-10-08T04:03:56.790 に答える
2

問題は、フロートを計算するときです。なぜそれらが以下のように異なるのかまだわかりません

$baseprice= 1705000/1.1 ; // 1550000

var_dump( decbin( $baseprice )); 
var_dump( decbin(1550000)); 

これを修正するには

$baseprice = round( $baseprice );
于 2013-10-08T04:04:05.970 に答える
0

float から integer に値を丸める前に、int に変換できます

$baseprice=1705000/1.1;

var_dump($baseprice);
//Before float to integer round the value then you can convert to int
$baseprice =round($baseprice);

$parseprice=intval($baseprice);
var_dump($parseprice);
于 2013-10-08T04:06:12.607 に答える