如何删除浮点数

如何删除浮点数

我有一个字符串变量:

var="50.335"

我尝试将其转换为 int,如下所示:

var=$(printf "%.0f\n" "$((var))")

并回显它:echo $var 但我收到此错误:

syntax error: invalid arithmetic operator (error token is ".335")

我需要它是一个整数,才能用它执行不同的运算。我该如何转换它?

答案1

您正在做的printf "%.0f" "$(( 50.335 ))"并且$(( ))只接受整数。

说啊:

$ var="50.335"
$ printf "%.0f\n" "$var"
50

man bash

算术扩展

算术扩展允许计算算术表达式并替换结果。算术扩展的格式为:

$((expression))

表达式被视为在双引号内,但括号内的双引号不会被特殊处理。表达式中的所有标记都会经过参数和变量扩展、命令替换和引号删除。结果将被视为要评估的算术表达式。算术扩展可以嵌套。

求值按照下面算术求值中列出的规则进行。如果表达式无效,bash 将打印一条消息指示失败,并且不会发生替换。

进而:

算术评估

在某些情况下,shell 允许对算术表达式进行求值 (...)。评估以固定宽度的整数进行 不检查溢出,但除以 0 会被捕获并标记为错误。


注意您还可以使用Shell 参数扩展删除点处的所有内容.

$ var="50.335"
$ echo ${var%\.*}
50

相关内容