这看似简单,但经过搜索,我空手而归。
如何在powershell中划分两位小数?
204.50 / 1,917.75
引发以下错误:
Method invocation failed because [System.Object[]] does not contain a method named 'op_Division'.
At line:1 char:1
+ 204.50 / 1,917.75
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (op_Division:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
答案 0 :(得分:3)
尝试退出逗号。你键入的内容看起来像204.50除以1然后是917.75
答案 1 :(得分:0)
Walter Mitty's answer是一种有效的解决方案。
解释原因 204.50 / 1,917.75
失败:
PowerShell数字文字(a)始终使用.
作为小数点,与当前文化无关,并且(b)执行< em> not 支持使用千位分隔符(例如,
)。
这意味着1,917.75
未被识别为数字文字,这引出了问题(kinda):如何解析?
因此, 也就是说,PowerShell 尝试将 由于PowerShell不知道如何通过数组(在PowerShell中一般表示为 也就是说,PowerShell寻找一种将除法运算符 暂且不说: PowerShell 重载某些运算符以使用数组,但仅当数组位于 LHS 时(左侧操作数)。 运营商 运算符单独应用到LHS的元素(与RHS上的标量相对应),以及操作返回的元素子集{{1返回为输入数组的子数组; e.g: 输出,
是PowerShell中的 array-construction 运算符:也就是说,由,
分隔的标记构成了数组的元素。< / p>
1,917.75
相当于@( 1, 917.75 )
:包含[int]
1
和[double]
的 2元素数组 917.75
。,
的优先级高于除/
之前的除法运算符,因此204.50 / 1,917.75
相当于: 204.50 / @( 1, 917.75 )
[double]
文字204.50
除以数组 @( 1, 917.75 )
[System.Object[]]
)来划分任何,因此会出现以下错误消息:Method invocation failed because [System.Object[]] does not contain a method named 'op_Division'.
/
(op_Division
)应用于数组操作数的方法,因为没有定义,所以错误发生。-eq
/ ne
,-like
/ -notlike
,-match
/ -notmatch
(请告诉我,如果我是&#39; m缺少任何一个)接受一个数组作为LHS,一个标量作为RHS,在这种情况下,运算符充当过滤器:$true
@( 'donald trump', 'hillary clinton', 'gary johnson' ) -notmatch 'trump'
,输入的子数组只包含那些不包含子串@( 'hillary clinton', 'gary johnson' )
的元素。