Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:字符串格式打印双精度_Java_Scala_Format_Decimal_Decimalformat - Fatal编程技术网

Java:字符串格式打印双精度

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

在一个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=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()
,该值取决于每台计算机的默认区域设置。