如何用数据类型浮点数来舍入数字?

时间:2017-05-12 20:03:15

标签: sap sapui5

非常直接的问题。我想要输出一个输出的数字,并将其四舍五入到小数点后两位。我似乎只能使用maxFractionDigits截断数字(请参阅下面的代码)

如何将数字舍入到2位小数?

<Input
    value="{
        path: 'helloPanel>/recipient/amount',
        type: 'sap.ui.model.type.Float',
        formatOptions: {
            minFractionDigits: 2,
            maxFractionDigits: 2
        }
    }"
    description="Hello {helloPanel>/recipient/name}"
    valueLiveUpdate="false"
    width="60%"
/>

1 个答案:

答案 0 :(得分:3)

您可以通过在formatOptions/roundingMode中定义specific rounding mode来轻松实现舍入。

By default,舍入模式距离零一半。例如。如果实际值是1.678,则输出将是1.68(在maxFractionDigits: 2的情况下)。但是,如果实际值为1.671,则输出将为1.67,看起来好像没有计算任何舍入,但这是因为half* rounds from 5+

如果您希望UI5始终远离零(无论maxFractionDigits的下一个数字是否> 4),那么您的代码将如下所示:

<Input value="{
  path: 'helloPanel>/recipient/amount',
  type: 'sap.ui.model.type.Float',
  formatOptions: {
    maxFractionDigits: 2,
    roundingMode: 'away_from_zero'
  }
}"/>

注意:即使doc提到了大写的舍入模式,它们也应该以小写形式使用(留下下划线)在XMLView中。否则会出现模糊的TypeError。

舍入模式

以下是一些显示舍入模式之间差异的图形:

远离零

ui5 rounding rounding away from zero
±1.678→±1.68

走向零

ui5 rounding towards zero
±1.678→±1.67

地板

ui5 rounding floor
“朝着负无穷大”:-1.678→-1.68 || 1.678→1.67

天花板

ui5 rounding ceiling
“朝向正无穷大”:-1.678→-1.67 || 1.678→1.68

半*

四种舍入模式中的一种,但仅从5+开始。
例如。 roundingMode: 'half_ceiling': - 1.678→-1.67 || 1.67 4 →1.67即使模式上限

According to the doc,也有可能定义你自己的mutator但尚未尝试过。

  

RoundingMode 或函数,用于舍入数字。该函数使用两个参数调用:数字和应保留的小数位数。