Go Premium for a chance to win a PS4. Enter to Win

x
Solved

# Division in VC++

Posted on 2007-03-31
Medium Priority
387 Views
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
Question by:tatikor_143

LVL 53

Accepted Solution

Infinity08 earned 1000 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

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

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

LVL 53

Expert Comment

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 85

Expert Comment

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

Author Comment

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

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

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

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

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

Author Comment

ID: 18829339
i already tried the above one.......
0

LVL 53

Expert Comment

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

0

Author Comment

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

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

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......

0

## Featured Post

Question has a verified solution.

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

When writing generic code, using template meta-programming techniques, it is sometimes useful to know if a type is convertible to another type. A good example of when this might be is if you are writing diagnostic instrumentation for code to generatâ€¦
This article shows you how to optimize memory allocations in C++ using placement new. Applicable especially to usecases dealing with creation of large number of objects. A brief on problem: Lets take example problem for simplicity: - I have a Gâ€¦
The goal of this video is to provide viewers with basic examples to understand and use while-loops in the C programming language.
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor anâ€¦
###### Suggested Courses
Course of the Month10 days, 1 hour left to enroll