%s如果不需要额外的格式,在格式化数字时是否有任何理由不使用格式说明符?
例如
int answer = 42;
String text = String.format("The answer is %s", answer);
Run Code Online (Sandbox Code Playgroud)
而不是更常见的:
int answer = 42;
String text = String.format("The answer is %d", answer);
Run Code Online (Sandbox Code Playgroud)
我问的原因是我想要做一些自动更改源代码,这将是不方便,要弄清楚是否该类型answer是int或String或别的东西,
Jon*_*eet 35
我希望在千位分隔符和其他特定于语言环境的选项方面存在潜在的差异.第一种方法是打算调用Integer.toString(这不是对语言环境敏感的)因为Integer没有实现Formattable.第二种是使用潜在的区域设置敏感的整数格式 - 它可以插入数千个分隔符,甚至可能使用不同的数字集等.
更仔细地查看文档,看起来如果没有特定的格式化标志就不会应用分组分隔符,但是:
数字定位算法
获得整数部分,小数部分和指数(适用于数据类型)的数字后,将应用以下转换:
- 字符串中的每个数字字符d由相对于当前语言环境的零数字z计算的特定于语言环境的数字替换; 那是d - '0'+ z.
样本有所不同:
import java.util.Locale;
public class Test {
public static void main(String[] args) {
Locale.setDefault(new Locale("hi", "IN"));
System.out.printf("String: %s; Number: %d\n", 1234, 1234);
}
}
Run Code Online (Sandbox Code Playgroud)