标签: floating-point

如何在 bash 或其他语言/框架中进行整数和浮点计算?

echo "20+5"从字面上使用会产生文本“ 20+5”。

25在这种情况下,我可以使用什么命令来获取数字总和?

另外,仅使用 bash 进行浮点运算的最简单方法是什么?例如,echo $((3224/3807.0))打印0:(.

我正在使用基本命令外壳(“命令行”)本身或通过使用命令行中可用的语言来寻找答案。

command-line shell arithmetic calculator floating-point

370
推荐指数
14
解决办法
50万
查看次数

如何将浮点数转换为整数?

这是在 bash 中进行浮点到整数转换的正确方法吗?有没有其他方法?

flotToint() {
    printf "%.0f\n" "$@"
}
Run Code Online (Sandbox Code Playgroud)

bash numeric-data floating-point

62
推荐指数
4
解决办法
17万
查看次数

哪个是当前的小数点分隔符?

假设我有一个 POSIX shell 脚本

  1. 需要在我无法控制的不同系统/环境中运行,并且
  2. 需要从尊重语言环境设置的程序发出的字符串中删除小数点分隔符。

如何以最通用的方式检测小数点分隔符?

shell posix locale floating-point

31
推荐指数
2
解决办法
3734
查看次数

如何在bash中使用恰好2位有效数字格式化浮点数?

我想用 bash 中的两个有效数字打印浮点数(可能使用常用工具,如 awk、bc、dc、perl 等)。

例子:

  • 76543 应该打印为 76000
  • 0.0076543 应打印为 0.0076

在这两种情况下,有效数字都是 7 和 6。我已经阅读了一些类似问题的答案,例如:

如何在shell中舍入浮点数?

Bash 限制浮点变量的精度

但答案的重点是限制小数位数(例如bccommand withscale=2printfcommand with %.2f)而不是有效数字。

有没有一种简单的方法可以用正好 2 个有效数字来格式化数字,还是我必须编写自己的函数?

bash awk bc floating-point dc

20
推荐指数
1
解决办法
4万
查看次数

awk 高精度算术

我正在寻找一种方法来告诉 awk 在替换操作中进行高精度算术。这涉及从文件中读取一个字段,并用该值的 1% 增量替换它。但是,我在那里失去了精度。这是问题的简化再现:

 $ echo 0.4970436865354813 | awk '{gsub($1, $1*1.1)}; {print}'
   0.546748
Run Code Online (Sandbox Code Playgroud)

在这里,我有一个 16 位的小数精度,但 awk 只给出了 6 位。使用 printf,我得到了相同的结果:

$ echo 0.4970436865354813 | awk '{gsub($1, $1*1.1)}; {printf("%.16G\n", $1)}'
0.546748
Run Code Online (Sandbox Code Playgroud)

关于如何获得所需精度的任何建议?

awk arithmetic floating-point

19
推荐指数
2
解决办法
2万
查看次数

如何在shell中舍入浮点数?

如何在命令行上正确舍入 IEEE 754 浮点数?

我想指定输出数字的精度 - 小数位数。

例如,四舍五入6.66到精度1应该给出6.7。更多见下表:

Value   Precision  Rounded
6.66    0          7
6.66    1          6.7
6.66    2          6.66
6.66    3          6.660
6.666   3          6.666
6.6666  3          6.667
Run Code Online (Sandbox Code Playgroud)

它应该可以在交互式 shell 中使用,但理想情况下足够健壮,可以在生产 shell 脚本中使用它。

command-line bash arithmetic floating-point

13
推荐指数
1
解决办法
7万
查看次数

bash 循环,增量为 0.02

我想在 bash 中使用 0.02 作为我尝试的增量进行 for 循环

for ((i=4.00;i<5.42;i+=0.02))
do
commands
done
Run Code Online (Sandbox Code Playgroud)

但它没有用。

bash for floating-point

12
推荐指数
2
解决办法
1万
查看次数

bash 可以在不使用外部命令的情况下进行浮点运算吗?

我读过bash可以在不使用外部命令的情况下进行整数运算,例如:

echo "$((3 * (2 + 1)))"
Run Code Online (Sandbox Code Playgroud)

能否bash也做浮点运算,而无需使用外部命令?

bash arithmetic floating-point

11
推荐指数
1
解决办法
1万
查看次数

bash中十进制数的比较

今天早上我的搜索是关于如何在 bash 中比较两个十进制数,我找到了这个答案:如何与 shell 脚本中的浮点数进行比较。然而,这个答案不包括这里的答案

$ [[ ((3.56 < 2.90)) ]]; echo $?
1
$ [[ ((3.56 < 4.90)) ]]; echo $?
0
Run Code Online (Sandbox Code Playgroud)

考虑到该答案已被否决,并且看起来有些不寻常的 bashism,这种算术评估的准确性是否值得信赖?

bash arithmetic floating-point

9
推荐指数
2
解决办法
2万
查看次数

Bash 限制浮点变量的精度

在 Ubuntu 14.04.1 LTS 64-bitbash 中,我通过将浮点 bash 变量乘以bc比例设置为 3 来清除浮点变量;但是,我无法将小数点后的位数设为零并去掉小数点左侧的零。我怎样才能转化,说0.005000000.005?由于我的文件命名约定,这是必要的。感谢您的建议。

更新:我可以将它用于已经定义的 shell 变量并重新定义它们吗?以下代码给了我一个错误。

~/Desktop/MEEP$ printf "%.3f\n" $w
bash: printf: 0.005000: invalid number
0,000
Run Code Online (Sandbox Code Playgroud)

语言环境输出

@vesnog:~$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=tr_TR.UTF-8
LC_TIME=tr_TR.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=tr_TR.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=tr_TR.UTF-8
LC_NAME=tr_TR.UTF-8
LC_ADDRESS=tr_TR.UTF-8
LC_TELEPHONE=tr_TR.UTF-8
LC_MEASUREMENT=tr_TR.UTF-8
LC_IDENTIFICATION=tr_TR.UTF-8
LC_ALL=
Run Code Online (Sandbox Code Playgroud)

的输出 echo $w

@vesnog:~$ echo $w
0.005000
Run Code Online (Sandbox Code Playgroud)

bash bc floating-point

8
推荐指数
2
解决办法
3万
查看次数

标签 统计

floating-point ×10

bash ×7

arithmetic ×5

awk ×2

bc ×2

command-line ×2

shell ×2

calculator ×1

dc ×1

for ×1

locale ×1

numeric-data ×1

posix ×1