import java.io.File ;
import java.io.FileNotFoundException ;
import java.io.PrintWriter ;
import java.text.DecimalFormat ;
public class Main {
public static void main
( String [ ] args
) { int n = 1000000 ;
double [ ] a = new double [ n] ;
for ( int i= 0 ; i< n; i++ ) {
}
// format1(n,a);
// format2(n,a);
// format3(n,a);
format4( n,a) ;
}
public static void format1( int n,double [ ] a) {
try {
long stime
= System .
nanoTime ( ) ; for ( int i= 0 ; i< n; i++ ) {
pw.printf ( "%.7f\n " , a[ i] ) ;
}
pw.flush ( ) ;
pw.close ( ) ;
System .
out .
println ( ( System .
nanoTime ( ) - stime
) / 1000000 + " ms" ) ; e.printStackTrace ( ) ;
}
}
public static void format2( int n,double [ ] a) {
try {
long stime
= System .
nanoTime ( ) ; for ( int i= 0 ; i< n; i++ ) {
pw.
println ( String .
format ( "%.7f" , a
[ i
] ) ) ; }
pw.flush ( ) ;
pw.close ( ) ;
System .
out .
println ( ( System .
nanoTime ( ) - stime
) / 1000000 + " ms" ) ; e.printStackTrace ( ) ;
}
}
public static void format3( int n,double [ ] a) {
try {
long stime
= System .
nanoTime ( ) ; for ( int i= 0 ; i< n; i++ ) {
pw.printf ( df.format ( a[ i] ) ) ;
}
pw.flush ( ) ;
pw.close ( ) ;
System .
out .
println ( ( System .
nanoTime ( ) - stime
) / 1000000 + " ms" ) ; e.printStackTrace ( ) ;
}
}
public static void format4( int n,double [ ] a) {
try {
long stime
= System .
nanoTime ( ) ; for ( int i= 0 ; i< n; i++ ) {
pw.printf ( dtos( a[ i] ,7 ) ) ;
}
pw.flush ( ) ;
pw.close ( ) ;
System .
out .
println ( ( System .
nanoTime ( ) - stime
) / 1000000 + " ms" ) ; e.printStackTrace ( ) ;
}
}
// http://q...content-available-to-author-only...a.com/p_shiki37/items/65c18f88f4d24b2c528b#comment-0b10eebdffb1991f3eb9
public static String dtos
( double x,
int n
) { StringBuilder sb = new StringBuilder( ) ;
if ( x < 0 ) {
sb.append ( '-' ) ;
x = - x;
}
x
+= Math .
pow ( 10 ,
- n
) / 2 ; // if(x < 0){ x = 0; }
sb.append ( ( long ) x) ;
sb.append ( "." ) ;
x -= ( long ) x;
for ( int i = 0 ; i < n; i++ ) {
x *= 10 ;
sb.append ( ( int ) x) ;
x -= ( int ) x;
}
return sb.toString ( ) ;
}
}
aW1wb3J0IGphdmEuaW8uRmlsZTsKaW1wb3J0IGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uOwppbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKaW1wb3J0IGphdmEudGV4dC5EZWNpbWFsRm9ybWF0OwoKcHVibGljIGNsYXNzIE1haW4gewoKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCQlpbnQgbiA9IDEwMDAwMDA7CgkJZG91YmxlW10gYSA9IG5ldyBkb3VibGVbbl07CgkJZm9yKGludCBpPTA7aTxuO2krKykgewoJCQlhW2ldID0gTWF0aC5yYW5kb20oKTsKCQl9Ci8vCQlmb3JtYXQxKG4sYSk7Ci8vCQlmb3JtYXQyKG4sYSk7Ci8vCQlmb3JtYXQzKG4sYSk7CgkJZm9ybWF0NChuLGEpOwoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgZm9ybWF0MShpbnQgbixkb3VibGVbXSBhKSB7CgkJdHJ5IHsKCQkJUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIobmV3IEZpbGUoIm91dDEudHh0IikpOwoJCQlsb25nIHN0aW1lID0gU3lzdGVtLm5hbm9UaW1lKCk7CgkJCWZvcihpbnQgaT0wO2k8bjtpKyspIHsKCQkJCXB3LnByaW50ZigiJS43ZlxuIiwgYVtpXSk7CgkJCX0KCQkJcHcuZmx1c2goKTsKCQkJcHcuY2xvc2UoKTsKCQkJU3lzdGVtLm91dC5wcmludGxuKChTeXN0ZW0ubmFub1RpbWUoKSAtIHN0aW1lKSAvIDEwMDAwMDAgKyAiIG1zIik7CgkJfSBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKCQkJZS5wcmludFN0YWNrVHJhY2UoKTsKCQl9Cgl9CgkKCXB1YmxpYyBzdGF0aWMgdm9pZCBmb3JtYXQyKGludCBuLGRvdWJsZVtdIGEpIHsKCQl0cnkgewoJCQlQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihuZXcgRmlsZSgib3V0Mi50eHQiKSk7CgkJCWxvbmcgc3RpbWUgPSBTeXN0ZW0ubmFub1RpbWUoKTsKCQkJZm9yKGludCBpPTA7aTxuO2krKykgewoJCQkJcHcucHJpbnRsbihTdHJpbmcuZm9ybWF0KCIlLjdmIiwgYVtpXSkpOwoJCQl9CgkJCXB3LmZsdXNoKCk7CgkJCXB3LmNsb3NlKCk7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigoU3lzdGVtLm5hbm9UaW1lKCkgLSBzdGltZSkgLyAxMDAwMDAwICsgIiBtcyIpOwoJCX0gY2F0Y2ggKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CgkJCWUucHJpbnRTdGFja1RyYWNlKCk7CgkJfQoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgZm9ybWF0MyhpbnQgbixkb3VibGVbXSBhKSB7CgoJCURlY2ltYWxGb3JtYXQgZGYgPSBuZXcgRGVjaW1hbEZvcm1hdCgiMC4wMDAwMDAwIik7CgkJdHJ5IHsKCQkJUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIobmV3IEZpbGUoIm91dDMudHh0IikpOwoJCQlsb25nIHN0aW1lID0gU3lzdGVtLm5hbm9UaW1lKCk7CgkJCWZvcihpbnQgaT0wO2k8bjtpKyspIHsKCQkJCXB3LnByaW50ZihkZi5mb3JtYXQoYVtpXSkpOwoJCQl9CgkJCXB3LmZsdXNoKCk7CgkJCXB3LmNsb3NlKCk7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigoU3lzdGVtLm5hbm9UaW1lKCkgLSBzdGltZSkgLyAxMDAwMDAwICsgIiBtcyIpOwoJCX0gY2F0Y2ggKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CgkJCWUucHJpbnRTdGFja1RyYWNlKCk7CgkJfQoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgZm9ybWF0NChpbnQgbixkb3VibGVbXSBhKSB7CgkJdHJ5IHsKCQkJUHJpbnRXcml0ZXIgcHcgPSBuZXcgUHJpbnRXcml0ZXIobmV3IEZpbGUoIm91dDQudHh0IikpOwoJCQlsb25nIHN0aW1lID0gU3lzdGVtLm5hbm9UaW1lKCk7CgkJCWZvcihpbnQgaT0wO2k8bjtpKyspIHsKCQkJCXB3LnByaW50ZihkdG9zKGFbaV0sNykpOwoJCQl9CgkJCXB3LmZsdXNoKCk7CgkJCXB3LmNsb3NlKCk7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigoU3lzdGVtLm5hbm9UaW1lKCkgLSBzdGltZSkgLyAxMDAwMDAwICsgIiBtcyIpOwoJCX0gY2F0Y2ggKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CgkJCWUucHJpbnRTdGFja1RyYWNlKCk7CgkJfQoJfQoJCgkvLyBodHRwOi8vcS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uYS5jb20vcF9zaGlraTM3L2l0ZW1zLzY1YzE4Zjg4ZjRkMjRiMmM1MjhiI2NvbW1lbnQtMGIxMGVlYmRmZmIxOTkxZjNlYjkKCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGR0b3MoZG91YmxlIHgsIGludCBuKSB7CgkJU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CgkJaWYgKHggPCAwKSB7CgkJCXNiLmFwcGVuZCgnLScpOwoJCQl4ID0gLXg7CgkJfQoJCXggKz0gTWF0aC5wb3coMTAsIC1uKSAvIDI7CgkJLy8gaWYoeCA8IDApeyB4ID0gMDsgfQoJCXNiLmFwcGVuZCgobG9uZykgeCk7CgkJc2IuYXBwZW5kKCIuIik7CgkJeCAtPSAobG9uZykgeDsKCQlmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewoJCQl4ICo9IDEwOwoJCQlzYi5hcHBlbmQoKGludCkgeCk7CgkJCXggLT0gKGludCkgeDsKCQl9CgkJcmV0dXJuIHNiLnRvU3RyaW5nKCk7Cgl9Cn0K