Solved

Division in VC++

Posted on 2007-03-31
14
381 Views
Last Modified: 2012-06-27
Hello Experts,

I want to perform a simple calculation but I am not getting the accurate results .
long a = 380835764;
long b = 458083024;

double c = (a / b) ;

The value that getting printed is zero always. I am intrested in quotient....

I am working in VC+
0
Comment
Question by:tatikor_143
14 Comments
 
LVL 53

Accepted Solution

by:
Infinity08 earned 250 total points
ID: 18829176
Try this :

double c = ((double) a) / b;

The reason is that with your line, the compiler uses integer division, instead of real division.
0
 
LVL 11

Expert Comment

by:DeepuAbrahamK
ID: 18829229
Reason is, 'long' will omit/drop the decimal part before it returns.
say operation  (a / b), both a & b are long then it will return only the values other than the decimal part.

also for example:

long a = 380835764.5555; //a will be 380835764
long b = 458083024.6666; //b will be 458083024
double c = (a / b) ; //c will be 0 and omit the decimal part

you could either make both the 'long' variable to 'double' or you can do what Infinity suggested.

Best regards,
DeepuAbrahamK

0
 

Author Comment

by:tatikor_143
ID: 18829234
Still it Shows the same error...

I am working on VC++ .Net in Visual Studio 2005.

Its very urgent.....I will increase the points...
0
Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

 
LVL 53

Expert Comment

by:Infinity08
ID: 18829242
>> Still it Shows the same error...

What error ? You didn't mention an error ...

Did you try this :

    long a = 380835764;
    long b = 458083024;

    double c = ((double) a) / b;

    cout << c << endl;
0
 
LVL 84

Expert Comment

by:ozo
ID: 18829250
double c = ((double) a) / b; should have worked,
How are you printing the zero value?
0
 

Author Comment

by:tatikor_143
ID: 18829275
I will paste the code....

long NewValue2 , Total ;
double percent;

fprintf(fd,"\n The values at iteration  NewValue2=%ld Total=%ld\n",NewValue2,Total);
o/p for above line....NewValue2 = 380835764 ,Total = 458083024 ;

percent = ((double)NewValue2)/((Total)) ;

fprintf(fd,"\n The value of percent is %lf \n",percent);// Gives output as 0.00000.
0
 
LVL 53

Expert Comment

by:Infinity08
ID: 18829282
Are you sure ?

Is there any other code you didn't show ?

Did you recompile the code after making the changes ?

It should show 0.117647
0
 
LVL 53

Expert Comment

by:Infinity08
ID: 18829289
Oh, and I see you're using a file for output. Try erasing the file before running the program ...
0
 
LVL 86

Expert Comment

by:jkr
ID: 18829312
... and if that still does not work, try

percent = ((double)NewValue2)/((double)(Total)) ;
0
 

Author Comment

by:tatikor_143
ID: 18829339
i already tried the above one.......
0
 
LVL 53

Expert Comment

by:Infinity08
ID: 18829341
>> i already tried the above one.......

How about my questions ?
0
 

Author Comment

by:tatikor_143
ID: 18829357
Are you sure ? Yes

Is there any other code you didn't show ? There is nothing that I can Show..I crated an empty project
and Just experimenting before I implent it in my project..

Did you recompile the code after making the changes ? Yes , I rebuilded ( Ctrl + Alt +F7)

It should show 0.117647 // No its not Showing...
0
 
LVL 53

Expert Comment

by:Infinity08
ID: 18829362
Create an empty project, and put this code in it :

#include <stdio.h>

int main(void) {
  long NewValue2 , Total ;
  double percent;

  FILE *fd = fopen("out.txt", "w");

  fprintf(fd,"\n The values at iteration  NewValue2=%ld Total=%ld\n",NewValue2,Total);

  percent = ((double)NewValue2)/((Total)) ;

  fprintf(fd,"\n The value of percent is %lf \n",percent);

  fclose(fd);
  return 0;
}

You'll see that it DOES work, unless you have a compiler that doesn't follow the standard.
0
 

Author Comment

by:tatikor_143
ID: 18829378
I got it working, I dont know the mistake that I made earlier but it really didn;t work at that time......I am really a fool......

Thanks for your time...........

I will close the thread.......
0

Featured Post

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

C++ Properties One feature missing from standard C++ that you will find in many other Object Oriented Programming languages is something called a Property (http://www.experts-exchange.com/Programming/Languages/CPP/A_3912-Object-Properties-in-C.ht…
Container Orchestration platforms empower organizations to scale their apps at an exceptional rate. This is the reason numerous innovation-driven companies are moving apps to an appropriated datacenter wide platform that empowers them to scale at a …
The goal of this video is to provide viewers with basic examples to understand how to use strings and some functions related to them in the C programming language.
The goal of this video is to provide viewers with basic examples to understand opening and reading files in the C programming language.

776 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question