Mám funkci, která vrací výsledek jako číslo double v intervalu 0,0 - 100,0, mě zajímají pouze výsledky jako 99,90 ale takovy tam nebude protože nejbližší výsledek bude něco jako 99,90143. Otázka tedy je zda existuje knihovní funkce, která umí u double odříznout vše od řekněme třetího desetinného místa?
Nebo musím použít metodu vynásobit výsledek 100x a odříznout desetinná místa jako celek.
Fórum › C / C++
Funkce která odřízne x deseiných míst v double?

#1 Hans
U double nelze odříznout desetinná místa, protože 99,9 nelze zobrazit v double. Vždy jen číslo o chlup menší nebo větší, ale nikdy přesně. Z těchto důvodů se na taková čísla používá datový typ decimal, který však jazyk C nemá. Databáze ho však mívají.
Řešením je vynásobení 100 a odříznutí desetinných míst.
#2 Kit
Mě celkem nevadí, že to není přesně 99,90, ale 99,90XXX, dokonce uvádím, že ve výsledku 99,90 nebude, úloha zni, najít číslo nejbližší 99,90. Zcela přesně má funkce postupně vychrlí 100000 výsledků z intervalu 0.0 - 100.0 a já z nich chci vybrat 1001, které budou nejblíže 0.00, 0,10, 0.20, ... 99.80, 99.90, 100,00, přičemž ně dokonce ani nezajímá onen výsledek, ale jen jeho pořadové čilo, které reprezentuje čas v časové doméně. Nicméně na to musím provést porovnání. Holt to pořeším vynásobením 100x, normálně bych to tak řešil, ale je to tak trochu didaktická úloha a chtěl jsme se tomu vyhnout.
#1 Hans
https://www.techonthenet.com/c_language/standard_library_functions/math_h/ceil.php
https://www.geeksforgeeks.org/ceil-floor-functions-cpp/
existuje ještě možnost, že prostě převedeš číslo na string a pak odseparuješ co potřebuješ, ale upozorňuju že po převodu stringu na číslo se opět muže objevit číslo typu 99.9999999998 atd podle systémi IEEE754
viz vysvětlení zde
https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
https://www.yosefk.com/blog/consistency-how-to-defeat-the-purpose-of-ieee-floating-point.html

Přidej příspěvek
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
































Uživatelé prohlížející si toto vlákno
Podobná vlákna
Omezeni vypisu cisel podle deseinych mist — založil tribalcz
Funkce, která načítá — založil Kaalc
Funkce, která vrací aktuální týden — založil x-time
Include stránky která obsahuje funkce s databází — založil Vlado
Cannot convert `double*' to `double' — založil mateo
Moderátoři diskuze