Diskuze: double v C#, C++
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 17 zpráv z 17.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Není problém až u zobrazení? Kdyžtak nahoď kód, jak si ty čísla předáváš.
Zde je malá ukázka
double tmp_a = 16;
double t = (double)tmp_a / 24;
Console.WriteLine(t.ToString("0.###############"));
Když knihovnu zavolám z C#, vrátí se vše v pořádku (0.66666666667). Ale pokud ji zavolám z C++, vrátí se např. 0.6666687452.
Pokud přehlídnu tu podivnost, proč by měl člověk volat z C++ C# kód, tak tam může být nějaký problémek jak chápou jednotlivé jazyky čísla s plovoucí čárkou.
Zkus velikosti datových typů. Ověř kolik míst je pro desetinnou čárku pro jednotlivé jazyky či zvol jiný datový typ.
Neviem ako to riešiš v c++, ale to vychádza z céčka a tam to funguje presne ako má.
No ta aplikace v C++ není moje, já k ní dělám pouze rozšíření.
Asi tam místo double dám decimal - to funguje.
Ano, to funguje. Ale mě nějak nefunguje přenos double z C# do C++ 
Ešte máš možnosť preniesť to ako string a potom ho prekonvertovať na double.
A to máš zadáno, že rozšíření musí být v C#?
Napsání ho v C++ a přeložení na stejném překladači by zřejmě
vyřešilo tvé problémy.
Díky za tip. Ale bohužel jsem zjistil, že již to dělení vrátí nepřesné číslo. Teď už fakt nevim kde je problém.
Ano to by vyřešilo, ovšem knihovna má několik tisíc řádků a převádět to do C++...
...již to dělení vrátí nepřesné číslo...
to myslíš v ktorom jazyku?
Ty si napísal funkčné delenie v c# a ja v c (to isté sa dá použiť v
c++).
Takhle:
Knihovna je v C#, a v ní je funkce:
double Vydel()
{
double tmp_a = 16;
double t = (double)tmp_a / 24;
return t;
}
Pokud tu knihovnu spustím z aplikace napsané v C#, dostanu
0.66666666667.
Pokud ji spustím v aplikaci napsané v C++, dostanu (např.) 0.6666687452 a
nikdy přesně to, co chci (0.66666666667).
Jo a ještě: to C++ je Win32.
Pro případ že bys neuměl dobře anglicky si to hoď to překladače.
...but again there is no simple way to get the C# compiler to reproduce the old C++ results
Nemohlo by to byť nejak takto?
string Vydel(double x, double y)
{
return (x / y).ToString();
}
Díky za rady, toto ale bohužel nefunguje, již jsem to zkoušel.
Zobrazeno 17 zpráv z 17.