首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算GPA (平均成绩)上限

如何计算GPA (平均成绩)上限
EN

Stack Overflow用户
提问于 2019-02-07 06:18:21
回答 1查看 168关注 0票数 2

我正在编写一段ColdFusion代码来计算平均成绩点。如何将GPA格式化(四舍五入)到小数点后一位?

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

代码语言:javascript
复制
<cfdump var = "#numberFormat(totalgpa, '.0')#">

例如。

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

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

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

EN

回答 1

Stack Overflow用户

发布于 2019-02-07 07:31:48

当涉及到舍入和数字精度时,我不再信任CF。下面是“Java方式”:

代码语言:javascript
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54563434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档