C++ Tolerance float – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C++ Tolerance float – C / C++ – Fórum – Programujte.comC++ Tolerance float – C / C++ – Fórum – Programujte.com

 

Kenvelo+2
Super člen
1. 10. 2021   #1
-
0
-

Zdravíčko mám otázku existuje nějaká funkce u které napíšu toleranci výpočtu třeba 100 +- 0,2. Výsledek 100,012 a vyhodnotí jí jako true ? Nebo to musím složitě sám napsat přes if ? Děkuji za odpověď

Nahlásit jako SPAM
IP: 89.177.208.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
JerryM0
Věrný člen
1. 10. 2021   #2
-
0
-

:)  musíš si to udělat sám ... jako všechno v životě :) .. chápeš jo ? ruční pohon :)

možná by sis měl o IEEE754 normě něco přečíst než začneš ... abys pak nebyl zklamán

http://yosefk.com/blog/consistency-how-to-defeat-the-purpose-of-ieee-floating-point.html

https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/

https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

http://www.softwareandfinance.com/CPP/FAQ_Floating_Point.html

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:2952:eeba:1dba:d330...–
1. 10. 2021   #3
-
0
-

Složitě? Pokud má vracet true/false, stačilo by to jako výraz: je větší rovno než hodnota - tolerance a menší nebo rovno než hodnota + tolerance. Pokud to budeš psát jako makro, doporučuji celý výraz uzavřít do závorek abys předešel neočekávanému rozvoji makra.

Foat a double jsou trochu ošemetný kvůli zaokrouhlování které vzniká tím, že je potřeba vyjádřit nekonečný počet reálných čísel pomocí konečného počtu kombinací nul a jedniček.

Je pro tvou aplikaci použitelná reprezentace s pevnou desetinnou čárkou? Pokud ano, jeví se mi to jako lepší řešení.

hu
 

Nahlásit jako SPAM
IP: 195.178.67.–
peter
~ Anonymní uživatel
4014 příspěvků
1. 10. 2021   #4
-
0
-

   

// nevim, jak se to pise v C++, ale v js treba takto
N = 100; T = 0.12; value = 100.012;
x = value - N;
vyhovuje = -T<=x && x<=T;
// ale, jako, klidne si na to napis funkci, bude to tak vic prehlednejsi
Nahlásit jako SPAM
IP: 2001:718:2601:258:a849:3f2e:97a2:6628...–
1. 10. 2021   #5
-
0
-

   

#define JE_V_TOLERANCI(stred, tolerance, hodnota)  ( ((stred - tolerance) <= hodnota) && (hodnota <= (stred + tolerance)) )


C makra jsem nějakou dobu nepsal, tak snad to bude správně.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
JerryM0
Věrný člen
2. 10. 2021   #6
-
0
-

https://h0nza.blogspot.com/2012/03/inline-funkce-v-c-c.html

https://www.uamt.feec.vutbr.cz/~richter/vyuka/1314_ppc/bppc/prednasky/06_Prednasky_13_inlinefce.pdf

https://cs.gadget-info.com/difference-between-inline

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:e43b:9775:c5d1:ed86...–
JerryM0
Věrný člen
3. 10. 2021   #7
-
0
-

docela by mě zajímalo jak se front-end programátor v html5+CSS3+JavaScript dostane k programování v C ... to jako za nim příde šéf a řekne mu "chlapče odteď budeš embedded programátor v C" ... :)

to je jako kdyby ředitel nemocnice přišel za gynekologem a řek mu "hele brácho zejtra máme tu transplantaci srdce tak ji budeš dělat ty místo chirurga kapišto ?" :) ) )  čiky čiky ) )

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:c4b2:548e:b9ab:96f5...–
Staon0
Návštěvník
27. 6. 2023   #8
-
0
-

Typický způsob, jak se kontroluje tolerance floatů vypadá takto:

if(fabs(actual - expected) <= tolerance) {
  /* -- delej neco */
}

A asi není problém si na to udělat funkci.

Nahlásit jako SPAM
IP: 94.113.119.–
remmidemmi0
Věrný člen
28. 6. 2023   #9
-
0
-

#1 Kenvelo
"Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná""

Fuzzy logické úrovně a Fuzzy Signálové Procesory (FSP) vymysleli také muži a používají všechny úrovně mezi log.0 a log.1.

Analogové počítače (stále se používají, protože pracují v reálném čase) vymysleli také muži a nepoužívají jen log.0 a log.1.

Spojením analogových počítačů a Fuzzy signálových procesorů (FSP) vznikají velmi výkonné systémy, které znají všechno možné mezi log.0 a log.1.  Jak se programují? Pomocí grafických programovacích nástrojů se znalostí diferenciálního a integrálního počtu.

V těchto počítačích se tolerance 100 +- 0,2 vyhodnocuje analogově, pomocí analogových komparátorů. Výsledek je prostě "fuzzy".

Nahlásit jako SPAM
IP: 37.48.4.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 70 hostů

Podobná vlákna

Overflow a float — založil Mara

Float X double — založil Hurys

C# - DataGridView + float — založil BDS

Double (float) — založil jack22

Delenie 2 float-ov — založil lukas.balaz

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý