<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 코드 의이 부분은 기사의 내용과 관련이 없습니다.,예로만</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"이 기사를 읽을 수 있습니다!"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
존재하다 PHP 사용 </span><span><span class="hljs-title function_ invoke__">floor</span></span><span>() 소수점에서 반올림 오류를 피하는 기능을위한 팁
존재하다进行数值计算时,특히 소수점이 포함 된 반올림 작업,PHP 내장 기능 </span><span><span class="hljs-title function_ invoke__">round</span></span><span>() 때로는 부동 소수점 번호의 정확성 때문입니다.,결과는 만족스럽지 않습니다。예를 들어,가격이 필요할 때、금리와 같은 데이터를 처리 할 때,</span><span><span class="hljs-title function_ invoke__">round</span></span><span>() 부정확 한 결과가 생성 될 수 있습니다,이것은 프로그램의 논리 및 최종 출력에 영향을 미칩니다.。
</span><span><span class="hljs-comment">## 자주 묻는 질문</span></span><span>
PHP 플로팅 포인트 정확도 제한,원인이됩니다 </span><span><span class="hljs-number">1.005</span></span><span> 그런 숫자 </span><span><span class="hljs-title function_ invoke__">round</span></span><span>() 처리 할 때,예상됩니다 </span><span><span class="hljs-number">1.01</span></span><span>,그러나 결과는 그럴 수 있습니다 </span><span><span class="hljs-number">1.00</span></span><span>。这是因为浮点数존재하다计算机内部是以二进制形式存储的,많은 소수점 소수점 숫자는 정확하게 표현할 수 없습니다,오류를 유발합니다。
```php
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">round</span></span><span>(</span><span><span class="hljs-number">1.005</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>); </span><span><span class="hljs-comment">// 산출 1</span></span><span>
</span></span>
바닥 () 함수는 아래쪽으로 둥글게됩니다. 반올림처럼 들리지는 않지만 수치 값을 올바르게 증폭시키고 조정하면 부동 소수점 번호를 반올림하여 오류를 피하기 위해 "가장 가까운 한계에 머무르는"효과를 달성 할 수 있습니다.
두 십수 자릿수를 유지하는 것과 같은 해당 소수점 자리에 숫자를 증폭시킨 다음 100 배 확대하십시오.
부동 소수점 오류를 피하기 위해 확대 된 숫자에 작은 오프셋 값 (예 : 0.00001)을 추가하십시오.
바닥 ()을 사용하여 반올림;
원래 크기로 다시 줄어 듭니다.
샘플 코드 :
<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">floor_round</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$number</span></span></span><span>, </span><span><span class="hljs-variable">$precision</span></span><span> = </span><span><span class="hljs-number">2</span></span><span>) {
</span><span><span class="hljs-variable">$multiplier</span></span><span> = </span><span><span class="hljs-title function_ invoke__">pow</span></span><span>(</span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-variable">$precision</span></span><span>);
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">floor</span></span><span>(</span><span><span class="hljs-variable">$number</span></span><span> * </span><span><span class="hljs-variable">$multiplier</span></span><span> + </span><span><span class="hljs-number">0.00001</span></span><span>) / </span><span><span class="hljs-variable">$multiplier</span></span><span>;
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">floor_round</span></span><span>(</span><span><span class="hljs-number">1.005</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>); </span><span><span class="hljs-comment">// 산출 1.00,그러나보다 정확한 결과를 얻으려면 필요에 따라 오프셋 값을 조정할 수 있습니다.</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">floor_round</span></span><span>(</span><span><span class="hljs-number">1.2349</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>); </span><span><span class="hljs-comment">// 산출 1.23</span></span><span>
</span></span>
예상치 못한 숫자 편차를 피하기 위해 실제 데이터의 범위에 따라 오프셋 값의 크기를 조정해야합니다.
엄격한 반올림 효과가 필요한 경우 BCMATH 또는 GMP와 같은 다중 예비 수학 확장을 사용하는 것이 좋습니다.
바닥 ()은 주로 "반올림"에 적합하며 "다중 반올림"또는 "다중"시나리오를 피하는 데 도움이됩니다.
배율 및 작은 오프셋 값과 결합 된 바닥 () 함수를 사용하면 부동 소수점 번호를 반올림하여 발생하는 오류를 효과적으로 피할 수 있습니다. 재무 또는 대도적 데이터를 다룰 때 실질적인 속임수입니다. 플로팅 포인트 수의 기본 메커니즘을 이해하고 합리적으로 기능 및 알고리즘을 선택하면 PHP 프로그램을보다 안정적이고 신뢰할 수 있습니다.
<span><span><span class="hljs-comment">// 결말은 기사의 내용과 관련이 없습니다.</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"읽어 주셔서 감사합니다,안녕히 가세요!"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>