<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent changes to 20: double to unsigned long long precision error</title><link href="https://sourceforge.net/p/cppcms/feature-requests/20/" rel="alternate"/><link href="https://sourceforge.net/p/cppcms/feature-requests/20/feed.atom" rel="self"/><id>https://sourceforge.net/p/cppcms/feature-requests/20/</id><updated>2013-02-26T08:44:28.089000Z</updated><subtitle>Recent changes to 20: double to unsigned long long precision error</subtitle><entry><title>#20 double to unsigned long long precision error</title><link href="https://sourceforge.net/p/cppcms/feature-requests/20/?limit=25#4ade" rel="alternate"/><published>2013-02-26T08:44:28.089000Z</published><updated>2013-02-26T08:44:28.089000Z</updated><author><name>Artyom Beilis</name><uri>https://sourceforge.net/u/artyom-beilis/</uri></author><id>https://sourceforge.net97f53539bb387668c991eb76b9cac847fdce3e09</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;milestone&lt;/strong&gt;: 1.2 --&amp;gt; 2.0&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</summary></entry><entry><title>#20 double to unsigned long long precision error</title><link href="https://sourceforge.net/p/cppcms/feature-requests/20/?limit=25#a1b6" rel="alternate"/><published>2013-02-26T08:42:47.246000Z</published><updated>2013-02-26T08:42:47.246000Z</updated><author><name>Artyom Beilis</name><uri>https://sourceforge.net/u/artyom-beilis/</uri></author><id>https://sourceforge.net62e5c1ea0478a37f6c685fb09c3506e97f4664f4</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Ticket moved from /p/cppcms/bugs/94/&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>#94 double to unsigned long long precision error</title><link href="https://sourceforge.net/p/cppcms/bugs/94/?limit=25#85dc" rel="alternate"/><published>2013-02-26T08:42:25.231000Z</published><updated>2013-02-26T08:42:25.231000Z</updated><author><name>Artyom Beilis</name><uri>https://sourceforge.net/u/artyom-beilis/</uri></author><id>https://sourceforge.netf7ac15ae3d98d7cd3ca62df9c6e9b61b7fea48a4</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;status&lt;/strong&gt;: open --&amp;gt; pending&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</summary></entry><entry><title>double to unsigned long long precision error</title><link href="https://sourceforge.net/p/cppcms/bugs/94/" rel="alternate"/><published>2013-02-25T13:15:09.625000Z</published><updated>2013-02-25T13:15:09.625000Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.netc3194143a0661b814473354728a45b04a7c096e4</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi, there is a bug with unsigned long long values. At least on my system where sizeof(unsigned long long) = sizeof(double) = 8&lt;/p&gt;
&lt;p&gt;The problem is that internally you use double for all intergral types, which might cause&lt;br /&gt;
loss of precision for big unsigned long long numbers.&lt;/p&gt;
&lt;p&gt;this fails on my system:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;unsigned&lt;/span&gt; &lt;span class="n"&gt;long&lt;/span&gt; &lt;span class="n"&gt;long&lt;/span&gt; &lt;span class="n"&gt;ullValue&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; 63660062001020978&lt;span class="p"&gt;;&lt;/span&gt;
 &lt;span class="n"&gt;double&lt;/span&gt; &lt;span class="n"&gt;doubleValue&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; 63660062001020978&lt;span class="p"&gt;;&lt;/span&gt;

 &lt;span class="n"&gt;double&lt;/span&gt; &lt;span class="n"&gt;unsignedlonglong_to_double&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;static_cast&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;double&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ullValue&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 &lt;span class="n"&gt;unsigned&lt;/span&gt; &lt;span class="n"&gt;long&lt;/span&gt; &lt;span class="n"&gt;long&lt;/span&gt; &lt;span class="n"&gt;double_to_unsignedlonglong&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;static_cast&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;unsigned&lt;/span&gt; &lt;span class="n"&gt;long&lt;/span&gt;             &lt;span class="n"&gt;long&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;doubleValue&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;qDebug&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &amp;quot;&lt;span class="n"&gt;unsigned&lt;/span&gt; &lt;span class="n"&gt;long&lt;/span&gt; &lt;span class="n"&gt;long&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &amp;quot; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;ullValue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;qDebug&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &amp;quot;&lt;span class="n"&gt;double&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &amp;quot; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;doubleValue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;qDebug&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &amp;quot;&lt;span class="n"&gt;unsigned&lt;/span&gt; &lt;span class="n"&gt;long&lt;/span&gt; &lt;span class="n"&gt;long&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;double&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &amp;quot; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;unsignedlonglong_to_double&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;qDebug&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &amp;quot;&lt;span class="n"&gt;double&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;unsigned&lt;/span&gt; &lt;span class="n"&gt;long&lt;/span&gt; &lt;span class="n"&gt;long&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &amp;quot; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;double_to_unsignedlonglong&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;output is:&lt;/p&gt;
&lt;p&gt;unsigned long long: 63660062001020978 &amp;lt;-- compare this&lt;br /&gt;
double: 6.36601e+16&lt;br /&gt;
unsigned long long to double: 6.36601e+16&lt;br /&gt;
double to unsigned long long: 63660062001020976   &amp;lt;-- with this&lt;/p&gt;
&lt;p&gt;cast from double &amp;lt;--&amp;gt; unsigned long long might cause problems both ways.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>double to unsigned long long precision error</title><link href="https://sourceforge.net/p/cppcms/feature-requests/20/" rel="alternate"/><published>2013-02-25T13:15:09.625000Z</published><updated>2013-02-25T13:15:09.625000Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.net85dbbec2446eb275c9a13990b2c2081e0d2aaa31</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Ticket 20 has been modified: double to unsigned long long precision error&lt;br /&gt;
Edited By: Artyom Beilis (artyom-beilis)&lt;br /&gt;
_milestone updated: u'1.2' =&amp;gt; u'2.0'&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>double to unsigned long long precision error</title><link href="https://sourceforge.net/p/cppcms/bugs/94/" rel="alternate"/><published>2013-02-25T13:15:09.625000Z</published><updated>2013-02-25T13:15:09.625000Z</updated><author><name>Anonymous</name><uri>https://sourceforge.net/u/userid-None/</uri></author><id>https://sourceforge.net92f18c97dcc94457ede06594634dd76e15e3b107</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Ticket 94 has been modified: double to unsigned long long precision error&lt;br /&gt;
Edited By: Artyom Beilis (artyom-beilis)&lt;br /&gt;
Status updated: u'open' =&amp;gt; u'pending'&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>