首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在bash脚本中将十进制变量转换为整数数值变量?

如何在bash脚本中将十进制变量转换为整数数值变量?
EN

Stack Overflow用户
提问于 2014-12-08 11:27:48
回答 4查看 4.2K关注 0票数 0

我有一个像这样的值: 26.3

我想要处理这个值,但是我需要它是整数,那么有一个简单的方法吗?

代码语言:javascript
复制
26.3 -> 26
44.9 -> 44

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-12-08 11:30:08

一种选择是使用awk:

代码语言:javascript
复制
$ var=26.3
$ awk -v v="$var" 'BEGIN{printf "%d", v}'
26

%d格式说明符只生成正在打印的数字的整数部分,并将其舍入。

正如Mark在his answer中提到的,在没有前导数字(如.9 )的情况下,简单的替换将失败,而这种方法将打印0

与使用格式说明符不同,还可以在awk中使用int函数。可以在标准输入中传递变量,而不是定义变量以缩短时间:

代码语言:javascript
复制
$ awk '{$0=int($0)}1' <<< "44.9"
44

如果您不熟悉awk,则结尾的1是常用的速记,它的计算结果总是为true,所以awk执行默认操作,即打印行。$0是一个变量,它引用行的内容。

感谢Jidder的建议。

票数 2
EN

Stack Overflow用户

发布于 2014-12-08 11:31:28

您可以使用替换来替换点及其后面的任何内容:

代码语言:javascript
复制
v=26.3
s=${v/\.*/}
echo $s
26

它截断而不是决定该绕哪个方向..。不过,使用.63可能会很有趣:-(而0.63会很好。)

票数 2
EN

Stack Overflow用户

发布于 2014-12-08 11:37:21

下面是一个使用bc对前一个int执行上限的版本:

代码语言:javascript
复制
n='26.3'
bc <<< "$n/1"
26

n='26.6'
bc <<< "$n/1"
26
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27356990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档