2010-12-04 5 views
3

이중 변수를 출력 할 때 fwrite를 사용하여 지수 형식으로 작성됩니다. PHP에서 변수를 표시 (복사 또는 저장) 할 때 항상 10 진수 형식으로 나타나는 기본값을 설정할 수 있습니까?지수 형태로 숫자를 출력하는 PHP

정확하게 문제는 json_decode 메서드를 사용하여 json 문자열에서 지수 값 형식이 아닌 double 값을 포함 할 때 발생합니다. 객체를 변환 한 후이 double 값은 지수가됩니다. 숫자를 가정

답변

1

은 여전히 ​​(문자열 반대)에 기록 될 때,이 그것을하는 방법 중 하나입니다 수레 :

echo rtrim(sprintf("%0.15f", $x), "0."); 

내가 깨끗한 방법 여부가 있는지 모르겠어요. 하지만 기본적으로 sprintf을 사용하여 소수점 이하 15 자리까지 인쇄 한 다음 후행 0 또는 . 문자를 잘라냅니다. (물론 모든 것이 0으로 끝나는 것을 보장 할 수는 없습니다.)

고정 된 크기를 원할 경우 15을 조정하고 rtrim을 제거 할 수 있습니다.

2

이 최근의 트위터/트윗 ID를 지수로 변환하는 것과 비슷한 문제가있었습니다. 나는 다른 몇 가지 방법을 수행 할 수 있습니다 PHP의 부동 소수점 정밀도를, 흐름이 완만하여 해결

...

  • 는 php.ini 파일에서 precision 값을 찾아에 ini_set('precision', 20);를 추가 precision = 20
  • 로 변경 당신이 근래에 괜찮아요 경우 PHP 응용 프로그램

그렇지 않으면 앱의 htaccess로 또는 가상 호스트 파일에 php_value precision 20 추가 당신의 BIGINT 문자열로 변환 당신은 또한과 같이 json_decode에 플래그를 전달할 수 5.3+ PHP가 ING : json_decode($json, true, 512, JSON_BIGINT_AS_STRING) 사실

+0

:'5.4.0 \t 옵션 매개 변수는 added.'이었다 - 그래서 5.4+하지만입니다 정밀한 것 - 그건 좋은 생각이야 :) – LeonardChallis