İkinci biçim, JavaDoc'a göre geçersiz görünüyor, ancak bir şekilde hata olmadan ayrılıyor. Ben biçimlendiricisine davranışını beklediğiniz Bu durumda
Pattern:
PositivePattern
PositivePattern ; NegativePattern
PositivePattern:
Prefixopt Number Suffixopt
NegativePattern:
Prefixopt Number Suffixopt
Prefix:
any Unicode characters except \uFFFE, \uFFFF, and special characters
Suffix:
any Unicode characters except \uFFFE, \uFFFF, and special characters
Number:
Integer Exponentopt
Integer . Fraction Exponentopt
Integer:
MinimumInteger
#
# Integer
# , Integer
MinimumInteger:
0
0 MinimumInteger
0 , MinimumInteger
Fraction:
MinimumFractionopt OptionalFractionopt
MinimumFraction:
0 MinimumFractionopt
OptionalFraction:
# OptionalFractionopt
Exponent:
E MinimumExponent
MinimumExponent:
0 MinimumExponentopt
tanımsız edilecek. Yani, herhangi bir eski şey üretebilir ve bunun herhangi bir şekilde tutarlı veya anlamlı olduğuna güvenemeyiz. Yani, neden 23.0'ı aldığınızı bilmiyorum, ancak kodunuzda kaçınmanızın saçmalık olduğunu varsayabilirsiniz.
Güncelleştirme: Java 7'nin DecimalFormat kitaplığı aracılığıyla bir hata ayıklayıcısını çalıştırıyorum. Kod sadece açıkça belirtmekle kalmıyor, '. #' Buna izin verildiğini gösteren bir yorum var (java.text.DecimalFormat: 2582-2593) ve buna izin veren bir uygulama (satır 2597). Bu, kalıp için belgelendirilmiş BNF'yi ihlal ediyor gibi görünüyor. Bu, belgelenmiş bir davranış olmadığı göz önüne alındığında, Java sürümleri ve hatta kitaplık uygulamaları arasında değişiklik yapmakla yükümlü olduğu için ona güvenmemeniz gerekir.
"#. #", Geçerli bir biçim olup olmadığını ve "23" ile sonuçlanan "#. #" Olmaması gerekiyor. – Tom
@ Tom: DecimalFormat (". 0") da çalışıyor. ". #" Gibi şeyler yasaklayan javadoc'ta hiçbir şey görmedim. – MGn
* "Javadoc'ta hiçbir şeyi yasaklayan hiçbir şey görmedim" #: # * Ben de değil, ama bu kodun doğru şekilde işleyebileceği anlamına gelmiyor. Aynı zamanda, "# # #" veya ".0" geçersiz olduğunda ve "geri dönüş", aynı dize ile sonuçlanacağından ("23.0") sonuçlanacağından, "DecimalFormat (". 0 ") işlevlerinin tesadüfi olabileceğini '). Ama yine, bu sadece bir tahmin. – Tom