2016-09-19 4 views
-8

Мое точное требование - если вторая десятичная цифра равна нулю, значение должно иметь только одно десятичное значение. Для других он должен иметь два десятичных знака.
Корзины нулей из десятичной части php

eg 1. 150.00 to 150.0 
eg 2. 150.10 to 150.1 
eg 3. 150.76 to 150.76 

Что мне нужно знать, есть ли PHP функция, чтобы сделать это.

echo floatval("150.00")."<br>"; 
echo floatval("150.10")."<br>"; 
echo floatval("150.76")."<br>"; 

Результат выглядит следующим образом:

150 
150.1 
150.76 

мне нужно иметь 150,0 вместо 150. Мне просто нужно знать, если есть какая-либо функция PHP. В противном случае я смогу написать код.

+0

Пробовали ли вы что-нибудь выполнить свое требование ??? –

+0

попробуйте перевести его в floatval() Например: '$ num = floatval (150.10);' – jitendrapurohit

+0

PS: это может завершиться неудачно в течение 150.00. Возьмите это в строку и проверьте функцию 'rtrim()' – jitendrapurohit

ответ

1

Вы можете использовать SUBSTR() функция также, чтобы удалить последний символ, если он равен 0. Может быть ниже код поможет вам

function roundit($string) 
{ 
$string = number_format($string,2); 
if (substr($string, -1, 1) == '0') 
{ 
    $string = substr($string, 0, -1); 
    echo $string; 
} 
else 
echo $string; 
} 
roundit('150.00'); 
roundit('150.10'); 
roundit('150.76'); 
+0

На самом деле, это не делает то, что сказал op. он сказал: «Если вторая десятичная цифра равна нулю, значение должно иметь только одно десятичное число. Для других оно должно иметь два десятичных знака». если я поставлю roundit (152.333332), он поставит тот же номер :). и он ясно сказал «для других, он должен иметь два десятичных знака». Я думаю, OP не знает, что ему нужно;) – hummingBird

+0

в этом случае он может использовать функцию number_format(), чтобы получить ровно 2 десятичных знака. Добавил ответ, добавив, что –

+0

он по-прежнему не работает, например. 100.4320 -> это даст 100.432. вы должны сначала number_format его, а затем разрезать конечный ноль (если таковой имеется). и, очевидно, он все еще хочет иметь '.0' – hummingBird

0

Вы можете написать простую функцию, которая поможет вам в этом. Нечто подобное может сделать трюк:

<?php 

    function removeTrailingZero($num){ 
     $num = floatval($num); 
     $pieces = explode(".", $num); 
     for($i=0; $i<count($pieces); $i++){ 
      if(isset($pieces[1])){ 
       $pieces[1] = preg_replace("#0*$#", "", $pieces[1]); 
       break; 
      }else{ 
       $pieces[1] = '0'; 
       break; 
      } 
     } 
     return rtrim(implode(".", $pieces), "."); 
     //return floatval(rtrim(implode(".", $pieces), ".")); 
    } 

    var_dump(removeTrailingZero(123.45)); 
    var_dump(removeTrailingZero(67.80)); 
    var_dump(removeTrailingZero(90)); 
    var_dump(removeTrailingZero(100.00000)); 

    // PRODUCES::: 
    string '123.45' (length=6) 
    string '67.8'  (length=4) 
    string '90.0'  (length=4) 
    string '100.0'  (length=5) 
+0

Спасибо за внимание. Мне нужно 100.0 вместо 100. Я могу отредактировать код для моего требования. – Thejas

+0

Это просто. Просто добавьте условие else в условное 'if' в цикле' for', а затем назначьте «0» переменной '$ pieces [1]'. Сообщение теперь обновляется, чтобы принять это во внимание. Однако теперь вы рискуете получить 'STRING' как возвращаемый тип данных для этой функции ... – Poiz

Смежные вопросы