Java:字符串格式打印双精度
在一个scala项目上工作,我不知道发生了什么 我有以下scala代码:Java:字符串格式打印双精度,java,scala,format,decimal,decimalformat,Java,Scala,Format,Decimal,Decimalformat,在一个scala项目上工作,我不知道发生了什么 我有以下scala代码: val getUrl = (lat: Double, lon: Double, zoomLevel: Int) => s"reverse.php?format=json&lat=%2f&lon=%2f&zoom=${zoomLevel}" .format(lat, lon) formatLocal是常规Java代码 在我的计算机上,它打印类似于reverse.php?format
val getUrl = (lat: Double, lon: Double, zoomLevel: Int) =>
s"reverse.php?format=json&lat=%2f&lon=%2f&zoom=${zoomLevel}"
.format(lat, lon)
formatLocal
是常规Java代码
在我的计算机上,它打印类似于reverse.php?format=json&lat=44.1234&lon=5.6788&zoom=10的内容
然而,在我们客户的一台计算机上(我无法在其上运行调试),它的格式是coma的两倍,比如reverse.php?format=json&lat=441234&lon=56788&zoom=10
我也试过了
.formatLocal(Locale.ENGLISH, lat, lon)
没有成功。然而,以下工作与预期相符:
val DECIMAL_FORMATTER = new DecimalFormat("#.######")
s"reverse.php?format=json&lat=${DECIMAL_FORMATTER.format(lat)}&lon=${DECIMAL_FORMATTER
.format(lon)}&zoom=${zoomLevel}"
但是我必须定义小数的数量,我更喜欢String.format方法
您对这种行为有什么解释吗?您是想用Java还是Scala格式化字符串?在Java中,您只需传递Locale.US
,它将始终使用逗号格式化double。例如String.format(Locale.US,“%f”,d)
。在我的Mac上,String.format(Locale.US,“%f”,0.55)
导致res1:String=0.550000
-如果您将Locale.US
传递给format
方法,它将在每台计算机上使用
。如果不传递区域设置,则它将使用locale.getDefault()
,该值取决于每台计算机的默认区域设置。