부동 소수점 번호 형식
-
20-09-2019 - |
문제
사용하고 싶습니다 number_format
PHP의 기능. 예를 들어:
$number = 234.51;
echo number_format($number,2);
이것은 플로트 번호에 대해 작동하지만 다른 숫자에 사용하고 싶습니다. 숫자가 10 진수이고 부동 소수점이없는 경우 : 145.00과 같은 것입니다. 이것을 어떻게 고칠 수 있습니까? 나는 필요할 때만 큼 많은 부동 소수점을 보여주고 싶다는 것을 의미합니다.
해결책 2
나는 number_format에서 원하는 것을 얻을 수 없다고 생각합니다. 그래서 나는 이것을했고 잘 작동합니다.
public function floatNumber($number)
{
$number_array = explode('.', $number);
$left = $number_array[0];
$right = $number_array[1];
return number_format($number, strlen($right));
}
답장을 위해 모든 고맙습니다.
다른 팁
조사 printf
그리고 sprintf
대신 기능 number_format
.
그들은 당신이 원하는대로 숫자를 포맷 할 수있는 능력을 제공합니다.
printf("%d", $int)
소수점 정수에 적합합니다.
printf("%4.2f", $float)
소수점 이하 두 자리가있는 부동 소수점 번호에 적합합니다.
number_format
통화 출력의 국제화를위한 것 같습니다. 그러나 소수점 '전체'숫자를 언급했기 때문에 그것이 원하는 것이라고 생각하지 않습니다.
더 나은 방법을 알지 못하지만 아래 코드와 같이 유형을 비교할 수 있습니다.
$number = 234.159;
if(is_float($number)) {
echo number_format($number, 2);
}else {
echo $number;
}
조금 빠르고 더러워 지지만 단순히 ...
str_replace('.00', '', number_format($potentialFloat, 2));
이상적이지만 효과적입니다.
핵심 문제는 얼마나 필요한지를 정의하는 것입니다. 첫 번째 소수점이 0이기 때문에 13.01을 13으로 정의 하시겠습니까? printf와 숫자 형식은 당신에게 얼마나 많은 소수점을 알아야하기 때문에, 나는 그것이 당신에게 효과가 있다는 것을 모른다.
어쩌면 이와 같은 것 (많은 기능이지만 처음 0을 찾은 다음 잘린 문자열을 반환합니다). 예, 집중적이지만 가장 좋은 방법 일 수 있습니다.
function show_number($number, $max = 8){ if(strpos($number, '.')){ $decimal = strpos($number, '.'); if(strpos($number, '.0')){ return substr($number, 0, $decimal);//returns whole if zero is first } else { if(strpos(substr($number, $decimal, $max), '0')){ $zero = strpos(substr($number, $decimal, $max), '0'); return substr($number, 0, $decimal+$zero);//returns number w/0 first zero } else { return substr($number, 0, $decimal+$max+1); //returns number with max places } } } else { return $number; //returns number if no decimals } }
rtrim(number_format($number, 2), '0.');
나는 다음을 사용하여 후행 0을 제거합니다.
// Trims a floating point number so there are no trailing zeros. For example:
// 1.00 -> 1
// 1.10 -> 1.1
function trimFloatingPoint($input) {
$strNum = strval($input);
while(substr($strNum, -1, 1) == '0')
$strNum = substr($strNum, 0, strlen($strNum) -1);
// Trailing zeros are gone. How about the trailing period?
if(substr($strNum, -1, 1) == '.')
$strNum = substr($strNum, 0, strlen($strNum) -1);
return $strNum;
}
$x = $x - floor($x)
당신에게 올바른 떠 다니는 지점을 줄 것입니다 ...