2014-12-24 8 views
3

안녕에 숫자를 반올림하지만 그것은 단지 보여 14 진수까지 반올림하지 않습니다.PHP : 나는 <strong>16 진수</strong>에 숫자를 반올림하기 위해 노력하고있어 16 진수

<?php 

$num= 0.16346153846153846; 

$round = number_format((float)$num, 17, '.', ''); 

echo $round * -1; 
?> 

OUTPUT :

-0.16346153846154

예상 출력 :

0.1634615384615385

다음

내 시도이다 0

나는 float이 십진수 14 자리라는 것을 안다. 십진수 16 진수에 대해 다른 방법이 있습니까?

+0

수레가 부정확 참조 : 16 개 자리는 일반적으로 대부분의 플랫폼에서 최대 값을 "허구"만을 의미 또는 자리를주는 큰 값이다. 보시다시피, 마지막 다섯 자리는 이미 반올림 오류입니다. 실제 요구 사항이라면 [임의 정확도 수학] (http://php.net/manual/en/book.bc.php)을 살펴보십시오. – mario

+0

http://php.net/manual/en/language.types.float.php – Rufinus

답변

3

이 매개 변수는 런타임에 설정할 수 있습니다.

ini_set("precision", "16"); 

Changing precision level floating-point variables

+0

나는 항상 최소한 16 진수를 제공하기 전에 이것을 시험해 보았습니다.하지만 16 진수가 더 큰 경우 내 목록에 17 진수가 포함되어 있습니다. . –

0

시도해 볼 수 있습니까? & 어떻게됩니까? (부동 소수점과 숫자를 다루는 최선의 방법이 아닐 수도 있음)

$num = 0.16346153846153846; 
$new_num = $num * -1; 
echo number_format((float)$new_num, 17); 

먼저 곱한 다음 결과를 반올림 해보십시오.