【发布时间】:2015-03-23 05:50:42
【问题描述】:
我有一系列数据,如下所示: 100 Mbps, 200 Mbps, 512 Kbps, 256 Kbps, 100 Mbps,
我需要标准化所有必须以“Mbps”为单位的所有数据。我正在使用 Jaspersoft 的 ETL 软件,它允许输入表达式来转换数据。每个数据将被拆分为 2 个变量,一个用于存储单位(speedunit),另一个用于存储 Double 类型的值(speedvalue)。现在我使用以下表达式:
speedunit.equalsIgnoreCase("Kbps") ? (speedvalue / 1000) : speedunit.equalsIgnoreCase("Gbps") ? (speedvalue * 1000) : Var.speedvalue
问题是,它将值四舍五入为整数。 例如。 512 假设为 0.512,但改为显示 1。 Math.round 也无济于事。我不能放入任何用户定义的函数。只允许表达。所以它必须是像示例中那样的单行表达式
格式化后的值将保存到 MSSQL 表中,列中的类型为 'decimal(28, 2)'
更新: 试过了,还是不行
speedunit.equalsIgnoreCase("kbps") ? Mathematical.REAL(String.valueOf(speedvalue/1000))
这会产生错误“DecimalFormat 无法解析为类型”
speedunit.equalsIgnoreCase("kbps") ? new DecimalFormat("0.00").format(String.valueOf(speedvalue / 1000)))
【问题讨论】:
-
import java.text.DecimalFormat 将解决decimalformat无法解析为类型的错误
-
这有助于解决错误。非常感谢你。但输出仍然不是十进制
标签: java double expression decimalformat