Je voudrais résoudre le mécanisme d'arrondi en utilisant PHP4,5.2 et ci-dessous (pas 5.3) Actuellement, je fais 0,05 arrondi, quelque chose comme cette page:
http://www.bnm.gov.my/index.php?ch=209&pg=657&ac=568 p> J'essaie d'utiliser la chaîne pour la diviser Sorti et manuellement ajout, mais pas vraiment une bonne solution, dans l'espoir de trouver quelqu'un pour la résoudre. p> p>
11 Réponses :
multiplier par deux, puis rond, puis diviser par deux. p>
Vous voulez essentiellement cartographier des valeurs à une grille. La grille est définie comme Qu'est-ce que n'est pas em> dans la table sont les nombres négatifs. Vous devez décider de déterminer s'il faut s'éloigner de zéro (symétrique) ou toujours dans la même direction (c'est-à-dire positif). P> code: p> un multiple de 0,05 code>. En général, vous devez trouver les multiplicands votre valeur réside entre.
Il y a une division par zéro sur le $ reposer = code> ligne.
@ E.C.ho: Comment cela peut-il être si pas d'étape code> n'est pas zéro?
A dirigé le code et c'est le message d'erreur qui est venu en retour.
Cela ne sera pas toujours arrondir, essayez par ex. Valeur de 11.25 - Ce code aboutira à .55 alors que la réponse correcte est de 0,5625 => 0,60. Pour toujours arrondir, vous pouvez simplement faire: plafond ($ valeur / pas d'étape) * $ étape
Utilisez cette fonction
function rndfunc($x){ return round($x * 2, 1) / 2; }
Vous vous retrouvez avec un seul nombre après la décimale si elle se termine en zéro (0).
sprintf ('% 0.2f', rndfunc ($ x));
Cela fonctionne pour moi dans WordPress WooCommerce Filtre de prix. Merci beaucoup add_filter ('woocommerce_get_price_excluing_tax', 'rond_price_product', 10, 1); add_filter ('woocommerce_get_price_incluing_tax', 'rond_price_product', 10, 1); add_filter ('woocommerce_tax_round', 'rond_price_product', 10, 1); add_filter ('woocommerce_get_price', 'rond_price_product', 10, 1); fonction rond_price_product ($ prix) {retour rond ($ prix * 2, 1) / 2; }
Conceptuellement, la procédure peut être effectuée comme suit: p>
Je pense que cela aurait dû être la réponse acceptée ... Comme cela vous permettra d'aborder essentiellement à n'importe quel nombre que vous désirez. Vous voulez parler de 0,005? aucun problème. Ou même 0.00002? Sûr! Rond ($ prix / $ min_size) * $ min_size $ prix peut être n'importe quel float min_size est le plus petit numéro possible (par exemple: 0,005 ou 0.000002) simple, mais brillant!
indice: - p>
$ INPUT1 = 24.05; P>
$ choses = ABS ($ entrée * 20); // 481 ".05" S P>
$ tenppcnt = ABS ($ choses / 10); // 48 ".05" S P>
$ aller-out = $ tenppcnt / 20; p>
echo $ aller-out; // 2.40 P>
function round5Sen ($value) { return number_format(round($value*20,0)/20,2,'.',''); } echo round5Sen(155.13); echo "\n"; echo round5Sen(155.12); echo "\n"; echo round5Sen(155.0); echo "\n"; echo round5Sen(155.18); echo "\n";
Je suis sûr qu'il y a des solutions plus élégantes, mais cela semble convenir à la tâche:
<?php // setup test $start_num = 89.90; $iterations = 10; // loop through test numbers for ($i = 0; $i < $iterations; $i++) { nickleRound($start_num + (0.01 * $i)); echo "\n\n"; } // function nickleRound($num) { $p = 0.05; echo "\n" . 'p= ' . $p; $num = round($num, 2); echo "\n" . 'num= ' . $num; $r = ($num / $p); echo "\n" . 'r= ' . $r; $r2 = ceil($r) - $r; echo "\n" . 'r2= ' . $r2; $a = round($num, 1); if (($r2 > 0) && ($r2 < 0.5)) { $a = $a + 0.05; } echo "\n" . 'a= ' . $a; }
Mauris gagne - J'ai pensé qu'il y avait une méthode plus simple. (-:
Développer un peu sur @xtofl pour permettre des étapes plus précises (non techniquement requises pour cette question)
//Round to nearest 0.05 echo round ($number * 20, 0) / 20; //Round Up to nearest 0.05 echo ceil ($number * 20) / 20; //Round Down to nearest 0.05 echo floor ($number * 20) / 20;
Merci @MAURIS pour la solution pour résoudre mon problème sur le mécanisme d'arrondi de la TPS de Malaisie. Cela fonctionne également dans SQL. P>
DÉCLAREZ @TESTABLE À LA TABLE TABLE (NUMÉRO DECIMAL (20,4)); P>
Insérer dans des valeurs @ReCTABLES (89,91), (89,92), (89,93), (89,94), (89,95), (89,96), (89,97), (89,98), (89,99), (89,99), >
Sélectionnez le numéro, rond (numéro * 2, 1) / 2 comme «arrondi» de @RePTable P>
php a la fonction ronde () pour le PHP 4, PHP 5, PHP 7, PHP 8 P>
fonction rndfunc ($ x) {retour rond ($ x * 2, 1) / 2; } c'est du travail! Merci beaucoup mauris
Si une réponse a résolu votre problème, veuillez cliquer sur la grande tick à côté de leur réponse.
@Shiro - Yep comme E.C.HO a dit, a mis une tique pour que les autres arrivent à cette question, ils connaissent la réponse.
Oups, je suis désolé oublié de mettre une grosse coche là-bas. Merci beaucoup de gars ~