我正在将一些 Excel 计算转换为 Powershell:
=ROUNDDOWN((250000.00-0)*5.00%/12,6)
Run Code Online (Sandbox Code Playgroud)
这给出了一个值 1041.666666
我已将其转换为 Powershell:
[Math]::Round((250000.00 - 0) * (5.00/100) / 12,6)
Run Code Online (Sandbox Code Playgroud)
但这给出了一个值 1041.666667
问题在于最后一个数字很重要,而且 powershell 没有将小数点四舍五入7到6. 这会导致问题,因为 Excel 的最终结果是,1461.59但对于 powershell 是1461.42
那么,在 Powershell 中将正确舍入到一定数量的小数位的最佳方法是什么?
Math.Round四舍五入到最接近的数字,而不是向下。您必须推出自己的使用版本Floor,例如:
function Get-RoundedDown($d, $digits) {
$scale = [Math]::Pow(10, $digits)
[Math]::Truncate($d * $scale) / $scale
}
Get-RoundedDown (250000 * .05 / 12) 6
Run Code Online (Sandbox Code Playgroud)
但是请注意,通常无法保证您看到的数字实际上只有小数点后六位数字,因为我们在这里所做的事情对二进制浮点数并不友好。因此,您很可能会收到一个类似1441.666600000003结果的数字,除了切换到decimal.
| 归档时间: |
|
| 查看次数: |
1844 次 |
| 最近记录: |