我有一个如下所示的值:26.3
我想处理这个值,但我需要它是整数,所以有一个简单的方法吗?
26.3 -> 26
44.9 -> 44
由于
答案 0 :(得分:2)
一种选择是使用awk:
$ var=26.3
$ awk -v v="$var" 'BEGIN{printf "%d", v}'
26
%d
格式说明符仅导致打印数字的整数部分,将其四舍五入。
正如Mark在his answer中提到的,如果没有前导数字,例如.9
,则简单替换会失败,而此方法将打印0
。
也可以在awk中使用int
函数,而不是使用格式说明符。变量可以在标准输入上传递,而不是定义变量以缩短变量:
$ awk '{$0=int($0)}1' <<< "44.9"
44
如果您不熟悉awk,最后的1
是常用的简写,总是评估为true,因此awk执行默认操作,即打印该行。 $0
是一个引用该行内容的变量。
感谢Jidder提出建议。
答案 1 :(得分:2)
您可以使用替换来替换点及其后面的任何内容:
v=26.3
s=${v/\.*/}
echo $s
26
它会截断而不是决定绕哪个方向...虽然.63
可能很有趣:-(而0.63
会很好。
答案 2 :(得分:1)
这是一个使用bc
执行上一个int的上限的版本:
n='26.3'
bc <<< "$n/1"
26
n='26.6'
bc <<< "$n/1"
26
答案 3 :(得分:0)
您似乎只想放弃小数部分:
x=26.3
x=${x%.*}
这在shell中处理,无需运行任何外部程序。