Division in Java always results in zero (0)?
You're doing integer division.
You need to cast one operand to double
.
Int division: Why is the result of 1/3 == 0?
The two operands (1 and 3) are integers, therefore integer arithmetic (division here) is used. Declaring the result variable as double just causes an implicit conversion to occur after division.
Integer division of course returns the true result of division rounded towards zero. The result of 0.333...
is thus rounded down to 0 here. (Note that the processor doesn't actually do any rounding, but you can think of it that way still.)
Also, note that if both operands (numbers) are given as floats; 3.0 and 1.0, or even just the first, then floating-point arithmetic is used, giving you 0.333...
.
Calculation always results in zero
You have an integer division, which will round to the right of the decimal point, as integer division gives integer result.
You should cast x
to float.
Try:
float y=(float)x/1000000000;
Why does this Java division print out zero?
This happens because what you are unknowingly doing is Integer Division.
To make calculations fast, computer uses Integer division method when there's no decimal number involved, and hence decimal values are lost.
Try this out:
System.out.println(5.0 / 9.0);
or
System.out.println(5.0 / 9);
or
System.out.println(5 / 9.0);
or
System.out.println((float) 5 / 9);
or
System.out.println(5 / (float) 9);
Java division by zero doesnt throw an ArithmeticException - why?
Why can't you just check it yourself and throw an exception if that is what you want.
try {
for (int i = 0; i < tab.length; i++) {
tab[i] = 1.0 / tab[i];
if (tab[i] == Double.POSITIVE_INFINITY ||
tab[i] == Double.NEGATIVE_INFINITY)
throw new ArithmeticException();
}
} catch (ArithmeticException ae) {
System.out.println("ArithmeticException occured!");
}
Why does 1 / 2 == 0 using double?
It's because of the data type.
When you do 1/2
that is integer division because two operands are integers, hence it resolves to zero (0.5 rounded down to zero).
If you convert any one of them to double, you'll get a double result.
double d = 1d/2;
or
double d = 1/2.0;
Why does division by zero with floating point (or double precision) numbers not throw java.lang.ArithmeticException: / by zero in Java
In short, that's the way it's specified in the IEEE-754 standard, which is what Java's Floating-Point Operations are based on.
Why doesn't division by zero (or overflow, or underflow) stop the program or trigger an error? Why does a standard on numbers include "not-a-number" (NaN)?
The 754 model encourages robust programs. It is intended not only for numerical analysts but also for spreadsheet users, database systems, or even coffee pots. The propagation rules for NaNs and infinities allow inconsequential exceptions to vanish. Similarly, gradual underflow maintains error properties over a precision's range.
When exceptional situations need attention, they can be examined immediately via traps or at a convenient time via status flags. Traps can be used to stop a program, but unrecoverable situations are extremely rare. Simply stopping a program is not an option for embedded systems or network agents. More often, traps log diagnostic information or substitute valid results.
Flags offer both predictable control flow and speed. Their use requires the programmer be aware of exceptional conditions, but flag stickiness allows programmers to delay handling exceptional conditions until necessary.
Java - Dividing two integers gives 0?
(float) ((float)songDuration / (float)originalSongDuration));
If you want a percent you should use floats. Diving one int by another will never give a decimal value. You are probably getting 0 returned because of this property of ints
Related Topics
How to Throw Checked Exceptions from Inside Java 8 Streams
Is the Order of Values Retrieved from a Hashmap the Insertion Order
What Is This Date Format? 2011-08-12T20:17:46.384Z
Finish All Previous Activities
Android - Programmatically Hide/Show Soft Keyboard
Launching Activities Within a Tab in Android
What's the Location of the Javafx Runtime Jar File, Jfxrt.Jar, on Linux
How to Store Unix Permissions in a Zip File (Built with Apache Ant)
Java I/O VS. Java New I/O (Nio) with Linux Nptl
Hibernate: Hbm2Ddl.Auto=Update in Production
Java Switch Statement: Constant Expression Required, But It Is Constant
Should I Instantiate Instance Variables on Declaration or in the Constructor
Differencebetween List and Arraylist
How to Add a Recyclerview Inside Another Recyclerview