abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 16:11 | IT novinky

Ke zhlédnutí na Invidious a YouTube je videozáznam rozborky a sborky mobilního telefonu Librem 5.

Ladislav Hagara | Komentářů: 9
dnes 13:33 | Komunita

Richard Stallman, zakladatel hnutí svobodného softwaru, se dnes v e-mailové konferenci guix-devel vyjádřil, že svobodný software je apolitický, resp. jedinou přípustnou politikou je politika svobodného softwaru. Reagoval na některé návrhy, že by se do svobodného softwaru měl zabudovat feminismus nebo jiný -ismus. Říká, že témata jako komunismus nebo sexuální orientace jsou „off-topic“. Je v pořádku mít politické názory, ale lidé

… více »
xkucf03 | Komentářů: 32
dnes 05:55 | Nová verze

Po téměř dvou letech vývoje od vydání verze 2.0 byla vydána verze 2.1.0 svobodného softwaru ScummVM (Wikipedie) umožňujícího bezproblémový běh mnoha klasických adventur na zařízeních, pro které nebyly nikdy určeny. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 3
včera 10:55 | IT novinky

Josef Průša představil novou 3D tiskárnu Original Prusa MINI. Její cena je 9 990 Kč a tisknout lze na ní objekty do velikosti 18 × 18 × 18 cm.

Ladislav Hagara | Komentářů: 37
12.10. 13:11 | Nová verze

Byla vydána nová stabilní verze 3.0 svobodné decentralizované mikroblogovací platformy a sociální sítě podobné Twitteru Mastodon (Wikipedie). Detailní přehled novinek na GitHubu. Projekt lze podpořit na Patreonu. Aktuálně má přislíbeno 5 697 dolarů měsíčně.

Ladislav Hagara | Komentářů: 1
12.10. 12:22 | Komunita

Larry Wall odsouhlasil přejmenování programovacího jazyka Perl 6 (Wikipedie) na Raku. Více viz Issue #81 a Pull request #89.

Ladislav Hagara | Komentářů: 13
11.10. 23:33 | Nová verze

Byla vydána nová major verze 2.0 open source systému pro filtrování nevyžádané pošty Rspamd (GitHub, ChangeLog). S novou verzí bylo změněno označování verzí z major.minor.patch na major.minor.

Ladislav Hagara | Komentářů: 0
11.10. 14:11 | Zajímavý článek

Fakultu informatiky Masarykovy univerzity navštívili v rámci Týdne s držiteli Turingovy ceny profesoři Donald Ervin Knuth a Dana Stewart Scott. Zveřejněn byl videozáznam z úterních Otázek a odpovědi s Donaldem Knuthem: Umění programování.

Ladislav Hagara | Komentářů: 10
11.10. 05:55 | Nová verze

Siteshwar Vashisht oznámil vydání KornShellu (Wikipedie) ve verzi 2020. Jedná se o novou stabilní verzi vydanou po více než šesti letech. Zdrojové kódy a changelog jsou k dispozici na GitHubu. Siteshwar Vashisht přednášel letos o KornShellu na konferencích FOSDEM 2019 a All Systems Go! 2019.

Ladislav Hagara | Komentářů: 1
11.10. 04:44 | Komunita

Na zítra – 12. října – připadá letošní Mezinárodní den proti DRM (Wikipedie). DRM je zkratkou pro Digital Rights Management nebo Digital Restrictions Management.

Ladislav Hagara | Komentářů: 16
Kdy jste naposledy viděli počítač s připojeným běžícím CRT monitorem?
 (19%)
 (4%)
 (11%)
 (39%)
 (24%)
 (2%)
Celkem 391 hlasů
 Komentářů: 22, poslední 23.9. 08:36
Rozcestník

www.AutoDoc.Cz

Dotaz: cast int na double

20.1.2017 20:11 Pavel
cast int na double
Přečteno: 447×
Dneska jsem v logu jednoho programu viděl změnu:
  int giveMeAnInt();
  double giveMeADouble();
  
  double a = giveMeADouble();
- double b = giveMeAnInt();
- double c = a / b;
+ int b = giveMeAnInt();
+ double c = a / static_cast<double>(b);
Může mi někdo vysvětlit přínos takové změny? Za sebe musím říct, že se mi změna nezdá a na jakýchsi (neznámých) platformách, kde double nemůže reprezentovat všechny hodnoty intu, nový kód pravděpodobněji skryje problém / potlačí varování kompilátoru o možné ztrátě přesnosti.

Odpovědi

20.1.2017 21:04 Sten
Rozbalit Rozbalit vše Re: cast int na double
Pokud se b nikde dál nepoužívá, tak je oboje totožné. Pokud by double nedokázal reprezentovat přesnou hodnotu intu, tak se použije nejbližší hodnota, a to i v prvním případě velmi pravděpodobně bez varování, protože to není constexpr a u runtime ztráty přesnosti kompilátor nevaruje (nemá jak).
20.1.2017 22:13 Pavel
Rozbalit Rozbalit vše Re: cast int na double
Pokud si vzpomínám, tak při konverzi uint64_t na double mi kompilátor kdysi hlásil "Possible loss of precision".
20.1.2017 22:20 Pavel
Rozbalit Rozbalit vše Re: cast int na double
Už jsem to našel
#include <iostream>

int main()
{
    long a;
    long b;
    
    std::cin >> a >> b;
    
    double ad = a;
    double bd = static_cast<double>(b);
    std::cout << ad << bd;
}
Zkompiluju g++ -Wconversion -o a a.cpp. Dostanu
a.cpp: In function ‘int main()’:
a.cpp:10:17: warning: conversion to ‘double’ from ‘long int’ may alter its value [-Wconversion]
     double ad = a;
                 ^
Static cast mi tedy potlačí varování na platformě, kde nelze provést konverzi pro všechny hodnoty zdrojového typu.
25.1.2017 01:02 Sten
Rozbalit Rozbalit vše Re: cast int na double
Hmm, zajímavé. Je pravda, že ISO C++ definuje, jak se to má převést, ale už nedefinuje, jestli je to úmyslné chování (a tedy není nutné varovat, jako třeba převod int na bool) nebo jen definovaný vedlejší efekt (a tedy je vhodné varovat, jako u převodu int na char).
24.1.2017 21:48 Vladimír Čunát | skóre: 19
Rozbalit Rozbalit vše Re: cast int na double
int je standardně 32-bit i na 64-bit (unix-like) platformách a myslím že 32-bit jde vždy v doublu reprezentovat bezztrátově (mantissa má ~50 bitů).
25.1.2017 01:32 Sten
Rozbalit Rozbalit vše Re: cast int na double
Na to není dobré spoléhat. Třeba knihovny Intel MKL používají ILP64, takže pokud kompilujete vůči nim (rozšíření FORTRANu), budete mít 64bitové inty. Na druhou stranu ISO C++ povoluje, aby double byl stejně přesný jako float, takže u soft float architektur (třeba ARMv5) může mít váš program klidně doubly s 24bitovou mantisou.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.