Piotr Stanek

Piotr Stanek Programista PHP /
JS developer

Temat: zaokrąglanie w smarty

mam sonde w której mamy 3 pytanie. wyniki sondy to

76.470588235294%Tak
11.764705882353%Nie
11.764705882353%Nie wiem

pokazuję to tak:

<span class="procent">{math equation="x / y * 100" x=$v.count y=$AllVotesPoll format="%.1f"}%</span>

wygląda to tak:

76.5%Tak
11.8%Nie
11.8%Nie wiem

ale jest żle bo wychodzi razem ponad 100%

chyba chodzi o to format....
Stanisław P.

Stanisław P. Software designer

Temat: zaokrąglanie w smarty

Takie prawo liczb. Jak będziesz miał po jednym głosie na każdą opcję, to wynik będzie 33,3% - w sumie 99,9%.

Jak chcesz to policz sumę i popraw ostatnią pozycję o +/- 0.1%. Nie będzie ani bardziej ani mniej poprawnie niż teraz.
Dariusz Żukowski

Dariusz Żukowski [keczerad]
Programista z
zamiłowania.

Temat: zaokrąglanie w smarty

Stanisław P.:
Takie prawo liczb. Jak będziesz miał po jednym głosie na każdą opcję, to wynik będzie 33,3% - w sumie 99,9%.

Jak chcesz to policz sumę i popraw ostatnią pozycję o +/- 0.1%. Nie będzie ani bardziej ani mniej poprawnie niż teraz.


piszesz sobie modyfikator i dodajesz go do katalogu /libs/plugins/ a nazywajac
modifier.zaokraglij.php

function smarty_modifier_zaokraglij($string)
{
return number_format($string, 2, ',', ' ');
}

a w szablonach smartów używasz:

{$cyfra|zaokraglij}

nie wiem być może w smartach jest taka funkcja, jednak przedstawiam przykład przedstawiający możliwości smartów.
Stanisław P.

Stanisław P. Software designer

Temat: zaokrąglanie w smarty

Dariusz Żukowski:
nie wiem być może w smartach jest taka funkcja, jednak przedstawiam przykład przedstawiający możliwości smartów.
Pierwsza wersja jest już poprawnie zaokrąglona:

11.764705882353% Nie wiem -> 11.8% Nie wiem
Dariusz Żukowski

Dariusz Żukowski [keczerad]
Programista z
zamiłowania.

Temat: zaokrąglanie w smarty

Stanisław P.:
Pierwsza wersja jest już poprawnie zaokrąglona:

reklam nie ogladasz : prawie robi wielką różnice :)

Mozesz sobie zrobić nie modyfiaktor a swoją funckje math w smartach.

konto usunięte

Temat: zaokrąglanie w smarty


$odpowiedzi = array(
76.470588235294,11.764705882353,11.764705882353,
);
$reszta = 0;
$tmpSuma = 0;
foreach($odpowiedzi as $odpowiedz) {

$tmpOdpowiedz = sprintf('%01.1f', $odpowiedz);
$tmpSuma += $tmpOdpowiedz;

if($tmpSuma >= 100) {
$reszta = (float) ($tmpSuma - 100);
}

echo ($tmpOdpowiedz-$reszta);
}


z jednym okiem przymrużonym ;)
Stanisław P.

Stanisław P. Software designer

Temat: zaokrąglanie w smarty

Przemek Czekaj:
z jednym okiem przymrużonym ;)
Nie zawsze zadziała. Nie sprawdzasz przypadku kiedy suma jest mniejsza od 100% (33.3 * 3 dalej da "zły" wynik).

konto usunięte

Temat: zaokrąglanie w smarty

http://tinyurl.com/3rdnuwuPrzemek Czekaj edytował(a) ten post dnia 02.08.11 o godzinie 20:28

konto usunięte

Temat: zaokrąglanie w smarty

kto pakuje taką logikę do szablonu? toż to głupota
szabon ma pokazać nie liczyć
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: zaokrąglanie w smarty

Przemysław R.:
kto pakuje taką logikę do szablonu? toż to głupota
szabon ma pokazać nie liczyć
Racja ! Do modelu z nim !
Mateusz Kurleto

Mateusz Kurleto Szukamy wybitnych
talentów do
świetnego zespołu IT
w Gdańsku

Temat: zaokrąglanie w smarty

Piotr Stanek:
chyba chodzi o to format....
Albo o matematykę:P

konto usunięte

Temat: zaokrąglanie w smarty

Przemysław R.:
kto pakuje taką logikę do szablonu? toż to głupota
szabon ma pokazać nie liczyć

Do routera z tym! A co!
Tomasz Krasoń

Tomasz Krasoń Programista php,
Centrum Systemów
Informatycznych Sp z
o.o.

Temat: zaokrąglanie w smarty

Nie no przecież smarty ma funkcje odpowiedzialną za formatowanie stringów:
http://www.smarty.net/docsv2/en/language.modifier.stri...

konto usunięte

Temat: zaokrąglanie w smarty

Tomasz Krasoń:
Nie no przecież smarty ma funkcje odpowiedzialną za formatowanie stringów:
http://www.smarty.net/docsv2/en/language.modifier.stri...

suma liczb zaokrąglonych nie jest nie równa sumie liczb bez zaokrągleniaPrzemysław R. edytował(a) ten post dnia 02.08.11 o godzinie 23:39



Wyślij zaproszenie do