|
|
|
1000 Java Tips ebook
|
|
 

Free "1000 Java Tips" eBook is here! It is huge collection of big and small Java
programming articles and tips. Please take your copy here.
Take your copy of free "Java Technology Screensaver"!. |
|
Easy Learn Java: Programming Articles, Examples and Tips - Page 301
Previous
1060 Stories (530 Pages, 2 Per Page)
Next
Number to String Conversion
|
Java: Number to String Conversion
A number can easily be converted to its equivalent decimal string
representation with concatenation. To control the appearance of
floating-point numbers (eg, number of decimal places)
use the java.text.DecimalFormat class.
Concatenating Numbers and Strings
You can convert practically any primitive or Object type to a
string by concatenating it with a String. For example,
int x = 1;
String s;
s = "x = " + x; // assigns "x = 1" to s
s = 3.5; // illegal, s is a String
s = "" + 3.5; // assigns "3.5" to s
s = "" + 1.0/3.0;// assigns "0.3333333333333333" to s
Concatenating a string with no characters in it ("")
is the usual idiom for converting something to a string.
There are ways to do this, such as the highly overloaded StringBuffer append(x)
and String.valueOf(x) methods.
The problem with floating-point numbers is that you
have no control over the number of decimal places the conversion
chooses for you, as you can see in the above example.
java.text.DecimalFormat
The java.text.DecimalFormat class provides many ways to format numbers into strings,
including number of fraction digits, using a currency symbol ($12.35),
scientific notation (3.085e24), percentage scaling (33%), and locale (national)
formatting options (3,000.50 or 3.000,50 or 3'000,50 or ...), different
patterns for positive, zero, and negative numbers, etc.
These notes show only how to specify the number of fraction digits.
Check the Java API documentation for other options.
First, create a DecimalFormat object which specifies the
format of the number. The zero before the decimal point means that
at least one digit is produced, even if it is zero. The zeros after
the decimal point specify how many fraction digits are produced.
import java.text.DecimalFormat;
. . .
// Create the DecimalFormat object only one time.
DecimalFormat myformat2 = new DecimalFormat("0.00");
. . .
// Use the formatting object many times.
System.out.println(myformat2.format(1.0/3.0)); // prints 0.33
This program uses the same formatting object many times.
import java.text.DecimalFormat;
public class FormatTest {
public static void main(String[] args) {
DecimalFormat myformat = new DecimalFormat("0.0000");
for (int i=1; i<=10; i++) {
System.out.println(myformat.format(1.0/i));
}
}
}
Rounding
Floating-point numbers may be rounded when using DecimalFormat or
the Math.round method.
Rounding uses the half even method which rounds to the nearest neighbor.
If the number is exactly
between its neighbors, it is rounded to the even neighbor.
The reason middle values are rounded to the even value, instead of up
as is commonly done, is to prevent an accumulation of errors.
Examples: 3.1 rounds to 3, 3.8 rounds to 4, 3.5 rounds to 4,
but 4.5 also rounds to 4, 5.5 rounds to 6.
93 comments | | Score: 3.33
|
Posted by jalex on Saturday, February 05, 2005 (00:00:00) (12880 reads)
|
Autoboxing
|
Java: Autoboxing
Autoboxing, introduced in Java 5, is the automatic conversion that Java makes between the
primitive (basic) types and their corresponding object wrapper classes
(eg, int and Integer, boolean and Boolean, etc).
This sugar coating the avoids the tedious and hard-to-read casting
typically required by Java Collections, which can not be used with primitive types.
Example
| With Autoboxing | Without Autoboxing |
int i;
Integer j;
i = 1;
j = 2;
i = j;
j = i; |
int i;
Integer j;
i = 1;
j = new Integer(2);
i = j.valueOf();
j = new Integer(i); |
Prefer primitive types
Use the primitive types where there is no need for objects
for two reasons.
- Primitive types will not be slower than their corresponding wrapper
types, and may be a lot faster.
- There can be some unexepected behavior involving
== (compare references)
and .equals() (compare values). See the reference below for
examples.
References
10 comments | | Score: 0
|
Posted by jalex on Friday, February 04, 2005 (00:00:00) (3465 reads)
|
|
|