Welcome to Cay Horstmann’s Home Page!

cay@horstmann.com | PGP Key

Photo of Cay Horstmann

I grew up in Northern Germany and attended the Christian-Albrechts-Universität in Kiel, a harbor town at the Baltic sea. I received a M.S. in computer science from Syracuse University, and a Ph.D. in mathematics from the University of Michigan in Ann Arbor. I taught computer science at San Jose State University for almost thirty years and held visiting appointments at universities in Germany, Switzerland, Vietnam, and Macau. I was a “serial entrepreneur” before that was a thing, including a stint as VP and CTO of a dot com startup that went from three people in a tiny office to a public company. In my copious spare time I write books and develop online courses for beginning and professional programmers.

Links

Books

For Professional Programmers

For Computer Science Students

From the Archives

Software

The March of Progress

1980: C 
printf("%10.2f\n", x);
1988: C++
cout << setw(10) << setprecision(2) << fixed << x << endl;
1996: Java 1.0
java.text.NumberFormat formatter = java.text.NumberFormat.getNumberInstance(); 
formatter.setMinimumFractionDigits(2); 
formatter.setMaximumFractionDigits(2); 
String s = formatter.format(x); 
for (int i = s.length(); i < 10; i++) System.out.print(' '); 
System.out.println(s);
2004: Java 5
System.out.printf("%10.2f%n", x);
2008: Scala and Groovy
printf("%10.2f%n", x)

Thanks to Will Iverson for the update. He writes: “Note the lack of semi-colon. Improvement!”

2012: Scala 2.10
println(f"$x%10.2f")

Thanks to Dominik Gruntz for the update, and to Paul Phillips for pointing out that this is the first version that is checked at compile time. Now that's progress.

2023: Java 21
System.out.println(FMT."%10.2f\{x}")

This proposal was withdrawn in 2024.

2023: C++ 23
std::println("{:10.2f}", x);

Thanks to Steve Gilbert for the update.