makro {$number} vypíše float jako integer

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
22
Člen | 1478
+
0
-

Nevím proč, ale očekávál bych např., že:

	$this->template->number1 = 8.2;
	$this->template->number2 = 2.0;
{dump $number1} //8.2
{$number1} //8.2

{dump $number2} //2.0
{$number2} //správně by měl vypsat float -> tedy 2.0, ale vypisuje integer 2

Editoval 22 (24. 8. 2011 0:07)

voda
Člen | 561
+
0
-

To je chování PHP:

$ php -r 'echo (string)2.0;'
2

pokud chceš zachovat desetinná místa, budeš muset použít printf().

22
Člen | 1478
+
0
-

aha, to mi nedošlo, dík.

hAssassin
Člen | 293
+
0
-

s timhle sem se taky kdysi setkal, ale reseni pomoci printf me napadlo hned a dal to neresil. Nebylo ale od veci (pokud by to bylo vubec mozne) udelat neco jako helper, ktery by to umel formatovat? Myslim ze mozna neco takovyho je ale moc to nefungovalo (ikdyz tenkrat jsem to asi pouzival blbe :-)

voda
Člen | 561
+
0
-

Existuje helper number.

Nox
Člen | 378
+
0
-

A má teda Nette vždy castovat? Nepoužít is_int/float?

22
Člen | 1478
+
0
-

voda napsal(a):

Existuje helper number.

toto je ideální..jaktože se mi ten helper vykouřil z hlavy? :-)

Editoval 22 (24. 8. 2011 1:44)

voda
Člen | 561
+
0
-

Nox napsal(a):

A má teda Nette vždy castovat? Nepoužít is_int/float?

Na konverze tam je implicitní při volání htmlspecialchars. Pokud to číslo chceš vypsat, tak se na string převést musí. Buď se to udělá automaticky, nebo tomu pomůžeš nějakým helperem. I kdyby Nette používalo is_float, tak stejně neví jak to chceš zobrazit (kolik desetinných míst).