如何获取浮点数的整数部分?

时间:2018-03-09 03:03:58

标签: linux shell floating-point integer

这是我的代码:

float = 10.23444566
awk {printf("%.0f\n", $float)}

我的答案是0。

我只想从中获得10分。

我正在使用awk命令。

3 个答案:

答案 0 :(得分:1)

试试这个。

float=10.23444566;
printf "%.0f" $float;

在shell脚本中,您用于printf命令的语法是错误的。你不能像c函数一样调用它。

有关详细信息,请参见手册页。

man printf

修改

如果要使用awk命令,则需要将float值传递给命令。请参阅下面的代码。

float=10.23444566;
echo $float | awk  '{printf "%.0f\n", $1}';

答案 1 :(得分:0)

好吧,(Posix-)Shell没有浮点数,当我们谈论浮点数时,谈论尾数和指数是有意义的,而且不清楚你的意思是什么"整数"一部分。

此外,您分配给变量float的语句在语法上是错误的,因此此时您将收到一条错误消息。

如果你有一个字符串,它可能看起来不像浮点数,但至少像一个小数(就像你的例子中那样),并且你想要提取小数点左边的部分,这就是像这样:

float=10.45671
int_part=${float%.*}

你需要考虑这些案例,你有一个负数,或者当你真的有一些看起来像一般浮动的东西时,即12.157E+03

答案 2 :(得分:0)

我相信这是OP寻找的答案:

b

这是相似的:

> float=10.23444556; echo $float | awk '{ printf "%d\n",$1 }'
10 
>