This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/64808] New: static_cast double to int on linux 32
- From: "friend1992friend1992 at yandex dot ru" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 26 Jan 2015 18:37:43 +0000
- Subject: [Bug c++/64808] New: static_cast double to int on linux 32
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64808
Bug ID: 64808
Summary: static_cast double to int on linux 32
Product: gcc
Version: 4.8.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: friend1992friend1992 at yandex dot ru
I have code :
#include <iostream>
void fun(double _v)
{
std::cout<<"_v="<<_v<<std::endl;
long long int var=static_cast< long long int >(_v*1000.);
std::cout<<"var="<<var<<std::endl;
}
int main(int ac, char** av)
{
fun(33.33);
return 0;
}
I try to compile this code on Linux x86_64 with GCC 4.8.2 (g++ test.cpp -o
test64), I get result in console:
_v=33.33
var=33330
but when I try to compile this code on Linux i686 with GCC 4.8.2 (g++ test.cpp
-o test32), I get result in console:
_v=33.33
var=33329
But if I replace "long long int var=static_cast< long long int >(_v*1000.);" to
"double t = _v*1000.; long int var=static_cast< long long int >(t);" I get the
result on Linux i686 with GCC 4.4.5:
_v=33.33
var=33330