Very strange output with casting

Login or Register for Dates, Times and to Reply

Thread Tools Search this Thread
Top Forums Programming Very strange output with casting
# 1  
Very strange output with casting

Hi All,

I am having a strange issue. Below is the code snippet. If I print
fraction * (double)::pow((double)10,scalingFactor)

which is a double I am getting 154 when I type cast that to

(int)( ((fraction) * ((double)::pow((double)10,scalingFactor))))

it is becoming 153. Not sure why casting get me different output. Also for another strange thing is if store the
fraction * (double)::pow((double)10,scalingFactor)

into a double and then type cast it returning me 154.

std::string floatToString(double fvalue, int valueLength, int scalingFactor)
double i = 0;
double fraction = modf(fvalue, &i);
int intpart = (int)i;
double returnValue = fraction * (double)::pow((double)10,scalingFactor);

std::stringstream ss;
ss	<< std::setfill('0')
<< std::setw(valueLength-scalingFactor)
<< intpart;
ss	<< std::setfill('0')
<< std::setw(scalingFactor)
 << (int)( ((fraction) * ((double)::pow((double)10,scalingFactor))));

std::cout << " VALUE = " << fvalue << " | scalingFactor = " << scalingFactor 
<< " | fraction= " << fraction << " | ss.str() = " << ss.str() 
<< " | ::pow((double)10.0,scalingFactor) = "<< ::pow((double)10.0, scalingFactor) 
<<" | fraction * (double)::pow((double)10.0,scalingFactor) = "<< fraction * (double)::pow((double)10.0, scalingFactor) 
<<" | (int)(fraction * (double)::pow((double)10.0,scalingFactor)) = "<< (int)(fraction * (double)::pow((double)10.0, scalingFactor)) 
<< " | returnValue = "<< (int)returnValue 
<< " | TESTOUTPUT =" << (int)( ((fraction) * ((double)::pow((double)10,scalingFactor))))
<< std::endl;

return ss.str();


VALUE = 0.154 |
scalingFactor = 3 | 
fraction= 0.154 | 
ss.str() = 000153 | 
::pow((double)10.0,scalingFactor) = 1000 | 
fraction * (double)::pow((double)10.0,scalingFactor) = 154 |
(int)(fraction * (double)::pow((double)10.0,scalingFactor)) = 153 |
returnValue = 154 | TESTOUTPUT=153

Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #495
Difficulty: Easy
Blocks of code cannot be nested within each other to form sub-blocks.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Echo's strange output

Hi, Kindly help me to understand the behavior or logic of the below shell command $ echo $!# echo $echo $ $ $ echo !$# echo $# 0 I am using GNU bash, version 3.2.25(1)-release (2 Replies)
Discussion started by: royalibrahim
2 Replies

2. Shell Programming and Scripting

Strange output from find

How can I prevent find from outputting the directory name /home/xxxxxxxx/Backup/.system (which isn't even "other writable"? I am trying to search for files that are "world writable" on a shared web host using the find statement, and I want to prevent find from creating an error (because the of... (4 Replies)
Discussion started by: nixie
4 Replies

3. UNIX for Advanced & Expert Users

Strange /etc/passwd output

Can someone please explain this to me? auser:x:500:500:Anne User:/home/auser:/bin/sh buser:x:501:501:Bob User:/home/buser:/bin/bash I'm used to it looking like this. What is the difference between the first name and second name? In the first case I had to use the first name to change my... (3 Replies)
Discussion started by: cokedude
3 Replies

4. UNIX for Advanced & Expert Users

strange output with du

Can someone please explain why I get two outputs with the du command? The first one gave me one. I also didn't ask for the second directory so why did it give that directory? $ du -h "/media/Part 1/Desktop/playlist" 775M /media/Part 1/Desktop/playlist $ du -h "/media/Part... (1 Reply)
Discussion started by: cokedude
1 Replies

5. Shell Programming and Scripting

Tcl:Very strange output!!

Hi, I using tcl script to perform certain conditions. Part of the results should have average . I couldn't figure out what 's the cause as the result of the average is Zero. Example of the case???? #!/usr/bin/tclsh set counter 500 set total 1000 puts "Total num: $total \n" puts ... (3 Replies)
Discussion started by: ENG_MOHD
3 Replies

6. Solaris

Strange df output on solaris 9

Hi all, After deleting some large log files on solaris 9 machine I can see strange df output shows below /dev/vx/dsk/rootvol 45G 16384E 50G 39879076698694% / I thought it will back to normal once I restart it but did not. I have seen in sunsolve article 6362734 that "Solaris 8... (0 Replies)
Discussion started by: rajashekar333
0 Replies

7. Solaris

Strange sar output

I was reviewing yesterday's sar file and came across this strange output! What in the world? Any reason why there's output like that? SunOS unixbox 5.10 Generic_144488-07 sun4v sparc SUNW,T5240 Solaris 00:00:58 device %busy avque r+w/s blks/s avwait avserv 11:20:01 ... (4 Replies)
Discussion started by: dangral
4 Replies

8. Solaris

Getting strange output of who -r command

Hi At OK> prompt, I have run the boot -s command After system is coming on to multiuser state, when I run the " who -r" command, I get the following message # who -r run-level Oct 17 03:48 last= Means I dont see "S" after run-level keyword. Could any one... (2 Replies)
Discussion started by: amity
2 Replies

9. Solaris

solaris 10 strange df output

hi, in solaris 10 SUN SPARC V245 server the following df -h output is showing . can i reuse the following disk space by deleting them /platform/sun4u-us3/lib/libc_psr/ 20G 5.2G 14G 27% /platform/sun4u-us3/lib/ (2 Replies)
Discussion started by: phani.madiraju
2 Replies

10. Shell Programming and Scripting

strange output

I had a similar script in solaris and it had no problem. I wrote this one in freeBSD and it gave me strange output. Can anyone please tell me why? thanks a lot #!/bin/sh #This is a shell script that checks file system capacity mounted on /home directory #If file system is over 90% capacity,... (1 Reply)
Discussion started by: k2k
1 Replies

Featured Tech Videos