2

我正在编写一个 ColdFusion 代码来计算平均成绩。如何将 GPA 格式化(向上取整)到小数点后一位?

我尝试使用 numberFormat 但没有得到预期的结果。GPA 正在四舍五入到最接近的整数。前任。当“我的 GPA 为 3.23 时,该函数会将其四舍五入为 3.0,而不是 3.2。

<cfdump var = "#numberFormat(totalgpa, '.0')#">

前任。

当我有 GPA 3.23 时,预期的结果应该是 3.2;

当我有 GPA 3.45 时,预期结果应该是 3.5;

当我有 GPA 3.98 时,预期结果应该是 4.0;

4

1 回答 1

1

在舍入和数字精度方面,我不再相信 CF。这是“Java方式”:

<cfoutput>
    #roundWithScale(3.23, 1)# = 3.2<br>
    #roundWithScale(3.45, 1)# = 3.5<br>
    #roundWithScale(3.98, 1)# = 4.0<br>
</cfoutput>

<cffunction name="roundWithScale" access="public" output="false" returnType="numeric">

    <cfargument name="value"    type="numeric"  required="true">
    <cfargument name="scale"    type="numeric"  default="2">
    <cfargument name="rounding" type="string"   default="ROUND_HALF_UP">

    <cfset LOCAL.BigDecimal = createObject("java", "java.math.BigDecimal")>

    <cfset LOCAL.value = createObject("java", "java.math.BigDecimal").init(
        toString(ARGUMENTS.value)
    )>

    <cfreturn LOCAL.value.setScale(
        javaCast("int", ARGUMENTS.scale),
        LOCAL.BigDecimal[ARGUMENTS.rounding]
    )>
</cffunction>
于 2019-02-06T23:31:48.307 回答