我有以下awk
命令,它也提供了上述结果。
echo '1600000.00000000' '1600000.0000' | awk '{ print ($1 != $2) ? "true" : "false" }'
结果是: - false
根据数值,命令给出的结果是正确的。
但我希望命令必须同时将输入('1600000.00000000'
'1600000.0000'
)视为string
,并将结果作为true
。因为如果你认为两个输入都是string
,那么它们就不一样了。精确度就是差异。
答案 0 :(得分:7)
从GNU Awk用户指南中强制将数字转换为字符串,用空字符串""
连接该数字
$ echo '1600000.00000000' '1600000.0000' |
awk '{ print ($1"" != $2"") ? "true" : "false" }'
答案 1 :(得分:1)
您还可以使用sprintf
:
echo '1600000.00000000' '1600000.0000' |\
awk '{ print(sprintf("%f",$1) == sprintf("%f",$2)) ? "true": "false"}'
true