Division problem

J

Jon

Hello all,

I'm trying to work out why the following always returns 0:

ulong b = (750 / 1128);

I've tried other types, not just ulong but always with the same
results, 0;

Am I missing something? It been a long day!

Thanks

Jon
 
P

Phil H

Hello all,

I'm trying to work out why the following always returns 0:

ulong b = (750 / 1128);

I've tried other types, not just ulong but always with the same
results, 0;

Am I missing something? It been a long day!

Thanks

Jon

John

ulong is an integer data type (unsigned 64 bit) which cannot represent
the fraction 750/1120

If you are working with non-integral numbers you need to work with
types such as float, single, double etc.

However, one word of warning. Even when an expression is being
assigned to a non-integral numeric type the result is evaluated is
though it is an integer if all the terms themselves are integers. The
expression (750 / 1128) will be treated as an integer because 750,
1128 are themselves integers, and since 0 < (750/1120) < 1 it is
rounded down to 0

Try this instead:

float b = 750.0F / 1128.0F

I guarantee it will not be zero.
 
G

Guest

Hello all,

I'm trying to work out why the following always returns 0:

ulong b = (750 / 1128);

I've tried other types, not just ulong but always with the same
results, 0;

Am I missing something? It been a long day!

Thanks

Jon

ulong is an integer and 750 / 1128 equals 0.66 - the integer part is 0

If you need to round it up, use Math.Round, for example

ulong b = Convert.ToUInt64(Math.Round(750D / 1128D)); // =1 :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,900
Latest member
Nell636132

Latest Threads

Top