+ 2
In java, is there any data type having range more than the range of the primitive data type "double" to store no.?
i.e. if I want to store a too large no. is out of the range of double data type... then how can i store that no.
3 odpowiedzi
+ 3
double is the "biggest" primitive type, you'd have to use the BigDecimal class for larger numbers and more precision. Working with BigDecimal is a bit more complicated, since you cannot use +, -,.. operators directly. Example:
import java.math.BigDecimal;
public class Program
{
public static void main(String[] args) {
BigDecimal num = new BigDecimal("1234567890.987654321");
System.out.println("Value is " + num);
num = num.multiply(new BigDecimal(100000000L));
System.out.println("Value is " + num);
}
}
+ 3
ok... thanks Tero Särkkä...But if I am comparing two BigDecimal numbers then it is an error...
import java.math.BigDecimal;
public class Program
{
public static void main(String[] args) {
BigDecimal num1 = new BigDecimal("1234567890.987654321");
System.out.println("Value is " + num1);
num2 = num1.multiply(new BigDecimal(100000000L));
System.out.println("Value is " + num2);
if(num1<num2) //comparing two BigDecimal numbers but it is an error
System.out.println("yes");
}
}
In this code I want to print "yes" because num1 is less than num2 ... so how can i compare their values and print "yes".
+ 2
You can use compareTo method for comparisons. It returns -1, 0 or 1, depending on whether the number is smaller, equal or greater than the given parameter. So in your case:
if (num1.compareTo(num2) == -1) {.... }