Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

Operace s čísly se zlomkovou čárkou

unlucky
verified
rating uzivatele
(16 hodnocení)
8. 11. 2022 15:34:49
Jak zachovám číslo jako je třeba 1/2 a pak nadále s tím pracovat (násobit, krát...)
A když mám např. 1/2 * 3 tak aby mi to hodilo 3/2 a ne 1,5?
Díky za odpovědi
8. 11. 2022 15:34:49
https://webtrh.cz/diskuse/operace-s-cisly-se-zlomkovou-carkou/#reply1509198
TomasX
verified
rating uzivatele
(4 hodnocení)
8. 11. 2022 15:45:23
a proč to potřebuješ? To je poměrně rozsháhlé téma.
Existují knihovny pro matematické operace https://github.com/brick/math, tady ta má modul BigRational.
Pokud se jedná o tenhle jednoduchý případ, tak si přepiš algoritmus pro násobení a zkracování zlomků. To v malém měřítku lze poměrně často, dělal jsem takhle kdysi školící aplikaci pro děti.
8. 11. 2022 15:45:23
https://webtrh.cz/diskuse/operace-s-cisly-se-zlomkovou-carkou/#reply1509197
glengoolie
verified
rating uzivatele
8. 11. 2022 15:52:07
"1/2 * 3 tak aby mi to hodilo 3/2" to je nejaka divna matika... ale ak ti ide o format tak na to su matematicke kniznice ktore ti naformatuju zlokmy a rozne matematicke vzorce.
8. 11. 2022 15:52:07
https://webtrh.cz/diskuse/operace-s-cisly-se-zlomkovou-carkou/#reply1509196
unlucky
verified
rating uzivatele
(16 hodnocení)
8. 11. 2022 15:52:39
Napsal TomášX;1653617
a proč to potřebuješ? To je poměrně rozsháhlé téma.
Existují knihovny pro matematické operace https://github.com/brick/math, tady ta má modul BigRational.
Pokud se jedná o tenhle jednoduchý případ, tak si přepiš algoritmus pro násobení a zkracování zlomků. To v malém měřítku lze poměrně často, dělal jsem takhle kdysi školící aplikaci pro děti.
Mám recept, kde je zapotřebí 1/2 lžíce cukru / porce. Uživatel zadá 3 porce, tak to vynásobí *3 a vyjde 3/2 nebo nejlépe 1 + 1/2 lžíce
Napsal glengoolie;1653618
"1/2 * 3 tak aby mi to hodilo 3/2" to je nejaka divna matika... ale ak ti ide o format tak na to su matematicke kniznice ktore ti naformatuju zlokmy a rozne matematicke vzorce.
Kolik si myslíš, že to má vyjít?
8. 11. 2022 15:52:39
https://webtrh.cz/diskuse/operace-s-cisly-se-zlomkovou-carkou/#reply1509195
TomasX
verified
rating uzivatele
(4 hodnocení)
8. 11. 2022 16:30:50
Pokud je vstup jen násobení zlomkového množství a případně zkrácení na minimální tvar, kód v php může být takovýhle. Ber to jako inspiraci, chybí mi tam lepší ošetření vstupu a není to testované, v php neprogramuji, ale třeba poslouží:
function calculate_fraction_number($input, $count) {
$parts = explode(" ", "$input");
// pouze zlomek, nema cele cislo na zacatku
if (count($parts) == 1) {
$real_part = "";
$fraction_part = $parts;
// obsahuje cele cislo na zacatku
} elseif(count($parts) == 2) {
$real_part = $parts;
$fraction_part = $parts;
// neplatný vstup, obsahuje moc mezer
} else {
// uprav dle aplikace
// pripadne chybu odchytni a tise ignoruj
throw new Exception('Neplatny vstup');
}
$fraction_parts = explode("/", $fraction_part);
if (count($fraction_parts) != 2) {
// uprav dle aplikace
// pripadne chybu odchytni a tise ignoruj
throw new Exception('Neplatny zlomek');
}
$numerator = intval($fraction_parts);
$denominator = intval($fraction_parts);
$real = intval($real_part);
$new_numerator = $numerator * $count;
$new_denominator = $denominator;
$new_real = $real * $count;
if ($new_numerator >= $new_denominator) {
$real_string = strval($new_real + floor($new_numerator / $new_denominator));
$new_numerator = $new_numerator % $new_denominator;
} else {
$real_string = "";
}
return "$input * $count = $real_string ${new_numerator}/${new_denominator}";
}
var_dump(calculate_fraction_number("1/2", 3)); /* 1/2 * 3 = 1 1/2 */
var_dump(calculate_fraction_number("1/2", 1)); /* 1/2 * 1 = 1/2 */
var_dump(calculate_fraction_number("3 1/2", 3)); /* 3 1/2 * 3 = 10 1/2 */
8. 11. 2022 16:30:50
https://webtrh.cz/diskuse/operace-s-cisly-se-zlomkovou-carkou/#reply1509194
unlucky
verified
rating uzivatele
(16 hodnocení)
8. 11. 2022 17:15:43
Já mám toto, ale nevím, zda není lepší řešení.
Pokud tam je lomítko, tak pracuju s čitelem a jmenovatelem zvlášť. Pokud tam není, tak pracuju jako s celým čislem. Když mi vrací výsledek beze zbytku, tak zobrazit celé číslo, jinak zobrazit čitatel, lomítko a jmenovatel zvlášť.
8. 11. 2022 17:15:43
https://webtrh.cz/diskuse/operace-s-cisly-se-zlomkovou-carkou/#reply1509193
aheadnology
verified
rating uzivatele
9. 11. 2022 05:51:06
Napsal unlucky;1653619
Mám recept, kde je zapotřebí 1/2 lžíce cukru / porce. Uživatel zadá 3 porce, tak to vynásobí *3 a vyjde 3/2 nebo nejlépe 1 + 1/2 lžíce
Pokud jde o něco tak neproblematického, jako recepty na vaření, tak bych se vůbec nebál pracovat s reálným číslem.
Pak při výstupu bych to převedl na celou část + zlomek. U toho zlomku bych silně zaokrouloval (stanovil bych si nějakou mez, třeba že maximální jmenovatel bude 5 - pochybuju, že nějaká kuchtička v domácnosti pracuje s něčím přesnějším -a pokud ano, že to má velký vliv na výsledek)
Takže bych v DB měl třeba 3,86853 - a ve výpise by bylo 3 4/5.
9. 11. 2022 05:51:06
https://webtrh.cz/diskuse/operace-s-cisly-se-zlomkovou-carkou/#reply1509192
crs
verified
rating uzivatele
(1 hodnocení)
7. 1. 2023 18:36:44
Napsal glengoolie;1653618
"1/2 * 3 tak aby mi to hodilo 3/2" to je nejaka divna matika... ale ak ti ide o format tak na to su matematicke kniznice ktore ti naformatuju zlokmy a rozne matematicke vzorce.
Pokud ti jde jenom o tohle (násobení zlomků celým číslem), můžeš si ukládat extra $citatel a $jmenovatel  a jako výsledek zobrazit:
$zbytek = ($cinitel * $citatel) % $jmenovatel;
echo (int)($cinitel * $citatel / $jmenovatel) . ($zbytek ? "+$zbytek/$jmenovatel" : "");
7. 1. 2023 18:36:44
https://webtrh.cz/diskuse/operace-s-cisly-se-zlomkovou-carkou/#reply1509191
Pro odpověď se přihlašte.
Přihlásit