Xtend:生成器生成逗号而不是点

时间:2016-02-23 08:11:45

标签: java templates generator code-generation xtend

我正在使用模板表达式来生成文件。例如:

def generateStuff(MyObject in) {
    '''
    This is the wrong value: «calculatedoubleValue(in.doubleValue)»
    '''
}

doubleValue的值为double。但是生成器生成一个逗号而不是一个点,作为分隔符。

我也尝试过使用DecimalFormat,例如:

def generateStuff(MyObject in) {
    var df = new DecimalFormat("0.000");
    var calculated = calculatedoubleValue(in.doubleValue)
    '''
    This is the wrong value: «df.format(calculated)»
    '''
}

但不幸的是它仍然会产生一个逗号。我想知道,因为它只发生在一些价值观而不是全部,尽管我只与double合作。另一个奇怪的事情是,它在调试(运行时Eclipse应用程序)时会生成点,但在将应用程序导出为Eclipse产品后会产生逗号。

原因可能是什么?

2 个答案:

答案 0 :(得分:0)

在模板表达式中,对任何值调用toString()(参见StringConcatenation)。 Double.toString将始终使用'。',因此问题必须在其他地方。 也许问题出在你的'calculatedDouble'方法中?

答案 1 :(得分:0)

虽然我没有太多关于您的环境的信息,但根据您的示例代码,您不直接使用Double.toString()(它总是使用.作为小数分隔符)但是{{1}这是区域敏感的。

使用DecimalFormat(String)构建DecimalFormat时,它将使用默认的"格式区域设置"。在某些区域设置中,小数点分隔符为DecimalFormat(例如英文),但在其他区域设置中为.(例如匈牙利语)。有关详细信息,请参阅API docs

针对您的问题提出的解决方案:

  • 确保应用程序在每种情况下使用相同的区域设置。
  • 明确设置特定于语言环境的格式设置选项。

真实代码:

,