<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to 20: double to unsigned long long precision error</title><link>https://sourceforge.net/p/cppcms/feature-requests/20/</link><description>Recent changes to 20: double to unsigned long long precision error</description><atom:link href="https://sourceforge.net/p/cppcms/feature-requests/20/feed.rss" rel="self"/><language>en</language><lastBuildDate>Tue, 26 Feb 2013 08:44:28 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/cppcms/feature-requests/20/feed.rss" rel="self" type="application/rss+xml"/><item><title>#20 double to unsigned long long precision error</title><link>https://sourceforge.net/p/cppcms/feature-requests/20/?limit=25#4ade</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Artyom Beilis</dc:creator><pubDate>Tue, 26 Feb 2013 08:44:28 -0000</pubDate><guid>https://sourceforge.net97f53539bb387668c991eb76b9cac847fdce3e09</guid></item><item><title>#20 double to unsigned long long precision error</title><link>https://sourceforge.net/p/cppcms/feature-requests/20/?limit=25#a1b6</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Ticket moved from /p/cppcms/bugs/94/&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Artyom Beilis</dc:creator><pubDate>Tue, 26 Feb 2013 08:42:47 -0000</pubDate><guid>https://sourceforge.net62e5c1ea0478a37f6c685fb09c3506e97f4664f4</guid></item><item><title>#94 double to unsigned long long precision error</title><link>https://sourceforge.net/p/cppcms/bugs/94/?limit=25#85dc</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Artyom Beilis</dc:creator><pubDate>Tue, 26 Feb 2013 08:42:25 -0000</pubDate><guid>https://sourceforge.netf7ac15ae3d98d7cd3ca62df9c6e9b61b7fea48a4</guid></item><item><title>double to unsigned long long precision error</title><link>https://sourceforge.net/p/cppcms/bugs/94/</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Mon, 25 Feb 2013 13:15:09 -0000</pubDate><guid>https://sourceforge.netc3194143a0661b814473354728a45b04a7c096e4</guid></item><item><title>double to unsigned long long precision error</title><link>https://sourceforge.net/p/cppcms/feature-requests/20/</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Mon, 25 Feb 2013 13:15:09 -0000</pubDate><guid>https://sourceforge.net85dbbec2446eb275c9a13990b2c2081e0d2aaa31</guid></item><item><title>double to unsigned long long precision error</title><link>https://sourceforge.net/p/cppcms/bugs/94/</link><description>&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;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anonymous</dc:creator><pubDate>Mon, 25 Feb 2013 13:15:09 -0000</pubDate><guid>https://sourceforge.net92f18c97dcc94457ede06594634dd76e15e3b107</guid></item></channel></rss>