String.formatの挙動で、%がエスケープ文字になるってのは分かるのですが

System.out.println(String.format("%ds",5));
//=>5s
System.out.println(String.format("%%ds",5));
//=>%ds
System.out.println(String.format("%%%ds",5));
//=>%5s

2番目だけ5がどっかに消えてしまっているのですが、コンパイルエラーにも実行時エラーにもならないのですが
挙動的にこれ問題ないのですかね
個人的にはコンパイルエラーで止まって欲しいのですが