Use setRoundingMode
, set the RoundingMode
explicitly to handle your issue with the half-even round, then use the format pattern for your required output.
Example:
DecimalFormat df = new DecimalFormat("#.####");
df.setRoundingMode(RoundingMode.CEILING);
for (Number n : Arrays.asList(12, 123.12345, 0.23, 0.1, 2341234.212431324)) {
Double d = n.doubleValue();
System.out.println(df.format(d));
}
gives the output:
12
123.1235
0.23
0.1
2341234.2125
EDIT: The original answer does not address the accuracy of the double values. That is fine if you don't care much whether it rounds up or down. But if you want accurate rounding, then you need to take the expected accuracy of the values into account. Floating point values have a binary representation internally. That means that a value like 2.7735 does not actually have that exact value internally. It can be slightly larger or slightly smaller. If the internal value is slightly smaller, then it will not round up to 2.7740. To remedy that situation, you need to be aware of the accuracy of the values that you are working with, and add or subtract that value before rounding. For example, when you know that your values are accurate up to 6 digits, then to round half-way values up, add that accuracy to the value:
Double d = n.doubleValue() + 1e-6;
To round down, subtract the accuracy.
The three most influential factors for Eclipse speed are:
- Using the latest version of Eclipse (2020-06 as on 26 June 2020)
Note that David Balažic's comment (July 2014) contradicts that criteria which was working six years ago:
The "same" workspace in Indigo (3.7.2) SR2 loads in 4 seconds, in Kepler SR2 (4.3.2) in 7 seconds and in Luna (4.4.0) in 10 seconds. All are Java EE bundles. Newer versions have more bundled plugins, but still the trend is obvious. (by "same" workspace I mean: same (additionally installed) plugins used, same projects checked out from version control).
Launching it with the latest JDK (Java 14 at the time of writing, which does not prevent you to compile in your Eclipse project with any other JDK you want: 1.4.2, 1.5, 1.6 older...)
-vm jdk1.6.0_10\jre\bin\client\jvm.dll
Configuring the eclipse.ini (see this question for a complete eclipse.ini)
-Xms512m
-Xmx4096m
[...]
The Xmx
argument is the amount of memory Eclipse will get (in simple terms). With -Xmx4g
, it gets 4 GB of RAM, etc.
Note:
- Referring to the jvm.dll has advantages:
- Splash screen coming up sooner.
- Eclipse.exe in the process list instead of java.exe.
- Firewalls: Eclipse wants access to the Internet instead of Java.
- Window management branding issues, especially on Windows and Mac.
Dec. 2020, Udo conforms in the comments
From version 4.8 (Photon) an up there was a steady speed gain after each version.
The main platform was optimized every release to load faster, enable more features for the dark theme and to add more features for newer Java versions for the Java development tools.
Especially with-in the last 3 versions the startup time was increased a lot. There should be a significant increase in start-up time with the newest version of Eclipse 2020-12.
In my experience it started a lot faster with each new version.
But: There are still plug-ins which do not follow the new way of using the Eclipse API and are therefore still slow to start.
Since the change to Java 11 as the minimum runtime version starting from Eclipse version 2020-09 at least the core system uses the newer features of the JVM. It is up to the providers of the other plug-ins to upgrade to newer APIs and to use the full power of modern CPUs (e.g. concurrent programming model).
Best Answer
MyEclipse IDE comes with a nice GUI builder Matisse4MyEclipse ("borrowed" from NetBeans IIRC). You will probably want to settle on a Java IDE as part of the decision making process since the two decisions tend to be closely related.
Instantiations is also another solid choice I have used, though a bit more expensive. CodeGear apparently likes this tool as well since it has been selected for inclusion in their JBuilder product lineup (which is now based on Eclipse).
Another option you should not overlook is Eclipse Rich Client Platform (RCP). Depending on who you ask it is either wonderful or evil since it competes with Swing and makes use of Native OS widgets (SWT). This is the technology behind Eclipse itself and may be a good choice if you like the Eclipse look and feel or are building a tooling platform.
FWIW I have used MyEclipse tooling extensively since about 2004 and am happy with the quality and very reasonable price. Please keep in mind that YMMV since everyone has different preferences and requirements.