|
Did you try converting the double value to string and manipulate from there, like finding the '.' character and extracting the string before and after it?
<font=arial>Weiye Chen
Life is hard, yet we are made of flesh...
|
|
|
|
|
thx for the reply..
I`m trying to avoid conversion to string and getting the data out of there, to avoid excess memory and process time..
I know in modern days noone cares about mem or process time anymore, but the devices I write for have limits.
(and keeping Cosmos 1 in that undetectable orbit requires process speed )
|
|
|
|
|
GDavy wrote:
What the hell is going wrong?????
From the MSDN, about conversion:
From double To long , Method: Truncate at decimal point. If result is too large to be represented as long, result is undefined.
~RaGE();
|
|
|
|
|
Thx for the reply..
the numbers I pass as parameters are small enough to be contained in an integer (see the values I passed in original post where problem occurs)
The problem lies in rounding I found out... somehow it keeps some rounding bit around when converting the double to int. So going from there I will fix the problem I think (hope)
|
|
|
|
|
....ha ! what a buggy thing..!
did you think about bitwise extraction ?
single and double are stored in a defined as'IEEE_754' standard:
1.Bit = +/-
2.-9. is Exponent
10.-32. is Mantisse
but all is counted from right to left &
starting with 0. to 31......so
have look at these definitions and get your numbers as bits from there
Typ Gesamtgröße Mantisse Exponent Bias
single 32 bit 23 bit 8 bit 127
double 64 bit 52 bit 11 bit 1023
http://www.computerbase.de/lexikon/IEEE_754
|
|
|
|
|
...a little grammar confusion in my last reply....
i want to add:
i had to deal with the extraction of 'float'= single and 'real'= double data
from a stream.
so i looked for bit-manipulation code thats around..because it's not really easy.
1. the exponent is stored with added value to avoid negative numbers...
2. the whole number is a expression from 2^xyz ....
&&&
--------------
if that doesn't help you really then it gives you at least ahint for the reason of that conversion phanomena.
-------------
.Net Framework helped me out there wit the BitConverter Class....
|
|
|
|
|
Thanks for the reply..
I looked up the IEEE standard you mentioned for floating point arithmetic.. Nice documentation, thanks. It's indeed explaining the peculiar behaviour I noticed.
Been so long since I looked at a basic C-type at such a low level that it was a nice refreshment!
|
|
|
|
|
|
void AFunction(double dNumber,int acc)
{
int nDecimal = (int)dNumber;
double dFract = dNumber - (double)nDecimal;
double dFactor = 1.0;
for (int dFi = 0; dFi < acc; dFi++) dFactor *= 10.0;
int nFract = (int)((dFract * dFactor) + 0.5);
} Hmm. I made the scale factor a double , and calculated it with a simple loop (the fastest solution would be to use an array lookup). I also rounded the result.
Software Zen: delete this;
|
|
|
|
|
......the ") + 0.5)" is a integer conversion tactic i saw at vb-accelerator.com
as well...>>>that must do!!
it ensures the rounding up to the next number bcause the int-conversion just kills the fraction after the '.' - Ha!
|
|
|
|
|
In MFC is there any way to Detect the currently playing song (mp3, mp4, wma, ra, wav, ogg, aac, aif)in a user's media player (iTunes, Windows Media Player, Winamp, Real, Napster etc.)
:->
|
|
|
|
|
Hey,
i want to read and write a .csv file using CFile. the records are like the following:
1.tif,Transferred,12:00-12:10,10KB/S
2.tif,Transferred,12:30-12:40,10KB/S
3.tif,Transferred,13:00-13:10,10KB/S
how can i load the contents into a CString and how can i read content line by line into a CString by using CFile class?
CFile::GetLength resturns the length of the file. but, if i define a buffer[length] to load the data, i found that the last few chars of the array are mass things.How does this come?
Thanks a lot!
|
|
|
|
|
a_du wrote:
want to read and write a .csv file using CFile.
Instead of CFile use it's derived Class CStdioFile,as it's Member Function CStdioFile::ReadString read file LINE by LINE
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
|
|
|
|
|
I guess you should use CStdioFile instead of CFile and use function like ReadString and WriteString. Then use Tokenize function of CString to parse the data.
a_du wrote:
if i define a buffer[length] to load the data, i found that the last few chars of the array are mass things.How does this come
<br />
byte buffer[length + 1];<br />
buffer[length] = '\0';
http://www.priyank.in/
|
|
|
|
|
Hey , i got a small tiny littile Question...
which is:
string string1;
string string2;
i wana check if da first 10 char in string1 == da first 10 char in string 2
how can i write that in c++??
Sorry for bothering ,
My regards,
Bahy
|
|
|
|
|
using std::string;<br />
<br />
int main()<br />
{<br />
string a("1234567890INTEL");<br />
string b("1234567890AMD");<br />
<br />
if(10 > a.length() || 10 > b.length()) {<br />
std::cout << "Length.\n";<br />
return 0;<br />
}<br />
<br />
std::cout << a.c_str() << "\n";<br />
std::cout << b.c_str() << "\n";<br />
<br />
int res = a.compare(0, 10, b, 0, 10);<br />
std::cout << "res = " << res << ".\n";<br />
<br />
return 0;<br />
}<br />
Maxwell Chen
|
|
|
|
|
One way would be to copy out the 10 characters in each string before comparing
char szStr1[11], szStr2[11];
strncpy(szStr1, string1, 10);
strncpy(szStr2, string2, 10);
szStr1[10] = '\0';
szStr2[10] = '\0';
if(strcmp(szStr1, szStr2) == 0)
{
}
<font=arial>Weiye Chen
Life is hard, yet we are made of flesh...
|
|
|
|
|
thanks u soo much ..bt it gave me an error at those lines
strncpy(szStr1, string1, 10);
strncpy(szStr2, string2, 10);
and the error is
cannot convert parameter 2 from 'class std::basic_string<char,struct std::char_traits<char="">,class std::allocator<char> >' to 'const char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
SO what can i do??
My regards..
bahy
|
|
|
|
|
replace string1 with string1.c_str()
cheers,
TOXCCT >>> GEII power [toxcct][VisualCalc]
|
|
|
|
|
Thank You soooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo Much...
|
|
|
|
|
|
Hello My Teacher ,
Can i ask you 1 more question , (if u dont mind)
How can i ask the user to insert a string , and to be saved in Title
i believe if it was a char[30] i can use
char Title[30];
cin.getline(Title,30);
But what is the case if it String??
My regards,
Bahy
|
|
|
|
|
I thought ana was asking the C++ string type....
Maxwell Chen
|
|
|
|
|
or in just 1 line:
strncmp( string1.c_str(), string2.c_str(), 10);
|
|
|
|
|
Hey ,,thanks for da code , it really works fine...
but can u tell me what does it mean , cause i cant understand how it works..
My regards,
ana bahy
|
|
|
|