How to Divide Two Integers to Get a Double

How can I divide two integers to get a double?

You want to cast the numbers:

double num3 = (double)num1/(double)num2;

Note: If any of the arguments in C# is a double, a double divide is used which results in a double. So, the following would work too:

double num3 = (double)num1/num2;

For more information see:

Dot Net Perls

Dividing two integers to a double in java

This line here d = w[L] /v[L]; takes place over several steps

d = (int)w[L]  / (int)v[L]
d=(int)(w[L]/v[L]) //the integer result is calculated
d=(double)(int)(w[L]/v[L]) //the integer result is cast to double

In other words the precision is already gone before you cast to double, you need to cast to double first, so

d = ((double)w[L])  / (int)v[L];

This forces java to use double maths the whole way through rather than use integer maths and then cast to double at the end

How to divide two ints and return a double in Java

(((double)a/(double)b)) This will give you = 0.57 and then this (int) this will convert 0.57 to 0 here (int)(((double)a/(double)b)); because integer can only hold whole numbers hence decimal values will be truncated.

use this to keep decimal values

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

Update : To achieve the decimal result, only one operand need to be cast as double and the optimizations for second parameter will be done by compiler.

Update Credits : @stackoverflowuser2010 and @cricket_007.

double correctAnswer = (double)a/b; 

or

This can also be done without explicit casting with Type Conversion or Type Casting which is done by the compiler.

Example Credits : @Andreas

double correctAnswer = a;  // a , will automatically converted to double 
correctAnswer /= b;

Integer division: How do you produce a double?


double num = 5;

That avoids a cast. But you'll find that the cast conversions are well-defined. You don't have to guess, just check the JLS. int to double is a widening conversion. From §5.1.2:

Widening primitive conversions do not
lose information about the overall
magnitude of a numeric value.

[...]

Conversion of an int or a long value
to float, or of a long value to
double, may result in loss of
precision-that is, the result may lose
some of the least significant bits of
the value. In this case, the resulting
floating-point value will be a
correctly rounded version of the
integer value, using IEEE 754
round-to-nearest mode (§4.2.4).

5 can be expressed exactly as a double.

How do I divide two integers inside a double variable?

Is "total_pairs" an int? If so, the divide is done as integer division. You need to explicitly cast one of the numbers to a double (and the other will be automatically promoted to double):

double percent = ((double)total_pairs)/10000; // or just simply 10000.0

Why does dividing two int not yield the right value when assigned to double?

This is because you are using the integer division version of operator/, which takes 2 ints and returns an int. In order to use the double version, which returns a double, at least one of the ints must be explicitly casted to a double.

c = a/(double)b;

How to divide 2 int in c?

You need a double variable to store the result. int stores only integers. Additionally, you have to typecast the other variables also before performing the division.


Do something like this

double c;
.
.
.
c = (double)a / (double)b;
printf("%f", c);

NOTE:

You do not need the & in printf() statements.

Why dividing two integers doesn't get a float?

This is because of implicit conversion. The variables b, c, d are of float type. But the / operator sees two integers it has to divide and hence returns an integer in the result which gets implicitly converted to a float by the addition of a decimal point. If you want float divisions, try making the two operands to the / floats. Like follows.

#include <stdio.h>

int main() {
int a;
float b, c, d;
a = 750;
b = a / 350.0f;
c = 750;
d = c / 350;
printf("%.2f %.2f", b, d);
// output: 2.14 2.14
return 0;
}

How to divide two integers without getting 0?

I'm not familiar with Presto, but my guess is that in the example you've provided 1/2 is being evaluated as an integer then is being cast as a double. Maybe something along the lines of SELECT CAST(1 AS DOUBLE)/CAST(2 AS DOUBLE) or you maybe you could just add .0 to the end of your numbers like SELECT 1.0/2.0. Just a few shots in the dark from me.



Related Topics



Leave a reply



Submit