首页 > 解决方案 > 只选择两位小数而不四舍五入

问题描述

我只想选择两位小数而不四舍五入。

$d = 123000.1264
'{0:f2}' -f $d

结果:123000,13,但我需要结果123000,12

有什么想法可以解决这个问题吗?

先感谢您!

标签: powershell

解决方案


[Math]::Truncate(123000.1264 * 100) / 100

可以。

123000.1264 * 100 = 12300012.64
[数学]::Truncate(12300012.64) = 12300012
12300012 / 100 = 123000.12

当您需要保持小数部分的准确性时,您应该对数字使用 [decimal] 类型,例如

$d = [decimal]123000.1264

然后 [Math]::Truncate 将使用其十进制重载来给出小数,而十进制除以整数(或双精度)将给出十进制结果。

当然,解释“向上”的方法不止一种:它可能意味着值增加 (3 > -5)幅度增加 (|-5| > |3|)。如果您需要前者,请使用 [Math]::Floor (转换 -1.1 -> -2.0)而不是 [Math]::Truncate (转换 -1.1 -> 1.0)。


推荐阅读