Hello,

I am working on Numbers

and string manipulations and I don't understand why for the first half of the Math class, they use printf then format for the trigonometric methods. Is there an advantage to doing one versus the other?

Thank you!

Printable View

- 06-21-2011, 01:33 AMbigsonnysystem.out.printf versus system.out.format
Hello,

I am working on Numbers

and string manipulations and I don't understand why for the first half of the Math class, they use printf then format for the trigonometric methods. Is there an advantage to doing one versus the other?

Thank you! - 06-21-2011, 01:41 AMJunky
As far as I am aware format and printf do the same thing. Perhaps it depends upon who wrote the methods in the Math class.

- 06-21-2011, 01:41 AMbigsonny
A sample code would help:

From: Beyond Basic Arithmetic (The Java™ Tutorials > Learning the Java Language > Numbers and Strings)

printf:

Code:`public class ExponentialDemo {`

public static void main(String[] args) {

double x = 11.635;

double y = 2.76;

System.out.printf("The value of e is %.4f%n", Math.E);

System.out.printf("exp(%.3f) is %.3f%n", x, Math.exp(x));

System.out.printf("log(%.3f) is %.3f%n", x, Math.log(x));

System.out.printf("pow(%.3f, %.3f) is %.3f%n", x, y, Math.pow(x, y));

System.out.printf("sqrt(%.3f) is %.3f%n", x, Math.sqrt(x));

}

}

Code:`public class TrigonometricDemo {`

public static void main(String[] args) {

double degrees = 45.0;

double radians = Math.toRadians(degrees);

System.out.format("The value of pi is %.4f%n", Math.PI);

System.out.format("The sine of %.1f degrees is %.4f%n", degrees,

Math.sin(radians));

System.out.format("The cosine of %.1f degrees is %.4f%n", degrees,

Math.cos(radians));

System.out.format("The tangent of %.1f degrees is %.4f%n", degrees,

Math.tan(radians));

System.out.format("The arcsine of %.4f is %.4f degrees %n",

Math.sin(radians),

Math.toDegrees(Math.asin(Math.sin(radians))));

System.out.format("The arccosine of %.4f is %.4f degrees %n",

Math.cos(radians),

Math.toDegrees(Math.acos(Math.cos(radians))));

System.out.format("The arctangent of %.4f is %.4f degrees %n",

Math.tan(radians),

Math.toDegrees(Math.atan(Math.tan(radians))));

}

}

- 06-21-2011, 01:42 AMbigsonny
- 06-21-2011, 01:56 AMJunky
What do you mean by "everything"? Are you asking are there methods that do the same thing throughout the API? Yes and no. There are a few methods that do the same or similar things but it is by no means prevalent. Why is this the case? I have no idea. I didn't work for Sun when they developed Java.

- 06-21-2011, 01:59 AMbigsonny
Sorry, I meant is it the case that format and printf do the same thing in every instance or are there differences that you are of that justifies their respective existence?

- 06-21-2011, 02:02 AMJunky
From the Java API

Quote:

An invocation of this method of the form out.printf(l, format, args)**behaves in exactly the same way**as the invocation

out.format(l, format, args)

- 06-21-2011, 02:21 AMpbrockway2
The println() and format() methods of PrintStream/Writer do differ in what they return. format() returns the stream, so that you can chain method calls together. In this regard the PrintStream/Writer format() allows the same style of code as the Formatter version.

- 06-21-2011, 03:15 PMbigsonny
Got it. Thank you very much.

Riffard - 06-21-2011, 03:23 PMJosAH
Here's the source to 'prove' the identical behaviour; (I ripped this from the src.zip file):

Code:`public PrintStream printf(String format, Object ... args) {`

return format(format, args);

Jos - 06-21-2011, 11:40 PMpbrockway2Quote:

Here's the source to 'prove' the identical behaviour