Function 如何将浮点参数传递到自定义EL函数(jsp)中?

Function 如何将浮点参数传递到自定义EL函数(jsp)中?,function,tags,el,jsp-tags,taglib,Function,Tags,El,Jsp Tags,Taglib,错误:MyExchangeClass类型中的方法exchangeConversion(String,String,float)不适用于参数(String,String,double) jsp文件中的代码,错误为15.4和15.4f,但若将函数和TLD更改为double,则一切正常。为什么要把15.4和15.4f当作双打 ... From GBP to USD: ${ elfuncs:exchange("GBP", "USD", 15.4f) } Otherwise: ${ elfuncs:exc

错误:MyExchangeClass类型中的方法exchangeConversion(String,String,float)不适用于参数(String,String,double)

jsp文件中的代码,错误为15.4和15.4f,但若将函数和TLD更改为double,则一切正常。为什么要把15.4和15.4f当作双打

...
From GBP to USD: ${ elfuncs:exchange("GBP", "USD", 15.4f) }
Otherwise: ${ elfuncs:exchange("GBP", "YEN", 15.4) }
TLD中的代码

  <function>
    <name>exchange</name>
    <function-class>mypackage.MyExchangeClass</function-class>
    <function-signature>float exchangeConversion(java.lang.String, java.lang.String, float)</function-signature>
  </function>

因为这是在中指定的。浮点文字总是被解释为
double

1.3文字 evalexpression中有布尔、整数、浮点、字符串和null的文本

  • 浮点-由中的
    FloatingPointLiteral
    构造定义 第1.19节
1.19收集的语法

  • FloatingPointLiteral
    的值范围为
    Double.MIN\u值
    Double.MAX\u值

只需将函数中的
float
更改为
double

那么,听你说。在EL函数中不可能使用float作为参数,不是吗?■ 如果A或B是浮点、双精度或包含、e或e的字符串:-如果A或B是BigInteger,则将A和B强制为BigDecimal并应用运算符。-否则,强制A和B都使用Double和apply运算符
    public static float exchangeConversion(String from, String to, float amount) { 
        float calculatedAmount = 0.0f;

        /* Example implementation code: */
        if(from.equals("GBP") && to.equals("USD")) {
            calculatedAmount = amount*1.5f;
        }
        return calculatedAmount; 
    }
}