Autor Zpráva
Xantippa
Profil
Zdravím,
lze převádět desetinná čísla na zlomky? Aby místo 0,25 ukázal 1/4 (klasicky pomocí zlomkové čáry, nikoli pouze lomítka.)
Předem děkuji za odpovědi!
Tori
Profil
Nějaké info jsou tu: Desetinné číslo na zlomek, zřejmě není ani tak problém samotný převod na zlomek, jako spíš použitelný způsob vykreslení.
Hitman
Profil
Nejde tedy ani tak o převod jako vykreslení zlomkové čáry, což si myslím že možné není, pouze obrázkem s příslušným altem.
Chro
Profil
Šlo by to třeba pomocí divu a v něm absolutně napozicovaných textů jako čísla a ___.
Alphard
Profil
Záleží na účelu. Často se používají generátory obrázku z LaTeXu zadaného do adresy obrázku, např. Google API chart.apis.google.com/chart?cht=tx&chl=%5Cfrac%7B1%7D%7B4%7D vytvoří . Ten nehezký řetězec je jen escapované \frac{1}{4}.
Pokud jde o převod samotný, je to triviální, násobením získat dvě celá čísla, eukleidovým algoritmem najít NSD a vydělit.
Xantippa
Profil
Děkuji moc, nějak jsem to vyřešila. Jen bych ještě chtěla zjistit, jestli lze nějak jednoduše nastavit, aby se zlomek sám zkrátil, např. aby z 500/1000 udělal jednoduše 1/2.

Přikládám svůj zdrojový kód, (je to barbarsky napsané, za to se omlouvám, teprve s tím ve škole začínáme)

<fieldset><legend>Převodník 2</legend>
            <form method="post">
             <input name="prevod" value="nastupne" type="radio" checked />Z radiánů na stupně
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="prevod" value="narad" type="radio" />Ze stupňů na radiány<br />
              Zadej hodnotu: <input name="hodnota" type="text" size="5" />
             <input class="tlacitko" value="Převést" type="submit" /> (desetinná místa odděl tečkou, nikoli čárkou)
            </form>
<?php
$vybrany = $_POST["prevod"];
$hodnota = $_POST["hodnota"];
if (isset($hodnota))
{if ($vybrany == "nastupne")
{$vysledek = $hodnota * 180/pi();
$stupne = floor($vysledek);
$m = floor(($vysledek - $stupne)*60);
$s = (($vysledek - $stupne)*60 - $m)*60;
echo $hodnota . " rad je " . $stupne . "° " . $m . "' " . round($s,0) . "''.";}
else
{$vysledek = $hodnota/180;
$citatel = round($vysledek*1000,0);
$jmenovatel = 1000;
echo $hodnota . "° je <math><mrow><mfrac><mrow><mn>" . $citatel . "</mn></mrow><mrow><mn>" . $jmenovatel . "</mn></mrow></mfrac></mrow></math>&pi; rad.";}}
?>
          </fieldset> 
Radek9
Profil
Xantippa:
Stačí najít největšího společného dělitele obou čísel. Zkus si vygooglit gcd funkci. ;-)
Xantippa
Profil
Musím se přiznat, ale jsem opravdová lama. Mohl bys mi, prosím, poradit konkrétněji? :)
Alphard
Profil
Xantippa
V [#5] je klíčové slovo eukleidův algoritmus, v [#7] zase gcd. Oba jsou velmi dobře vyhledatelné. V php je nativně v knihovně GMP funkce gmp_gcd(), ale má mírně specifické použití, viz příklad v manuálu. Jinak není problém vyhledat vlastní 5řádkovou funkci pracující s klasickým integerem.

Mohu-li doplnit začátečnický tip, doporučil bych přehledněji formátovat kód, alespoň odsazovat zanořené bloky, [#6] je velmi nepřehledný.
Xantippa
Profil
Jo, vím, hledala jsem a našla jsem, ale jsem ztracená, na to prostě ještě nemám. Tak nějak jsem nadšená, že mi ten převodník funguje, i když je to vyloženě "zmastěné" (sama mám problém se v tom vyznat), a snad to tam někdy budu schopná zakomponovat. Díky za pomoc. :)
Opravuji: Zapotila jsem se, ale podařilo se, funguje. Ajťák by si nejspíš rval všechny vlasy z hlavy, ale co je doma, to se počítá!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: