【发布时间】:2009-09-16 01:02:14
【问题描述】:
在windows下,当我需要进行基本计算时,我会使用内置计算器。现在我想看看如果你只有一个外壳,常见的方法是什么。
谢谢
【问题讨论】:
-
我不敢相信没有人提出 Perl 解决方案! ;-)
-
还有许多基于 gui 的 linux 计算器。但 dc 或 bc 很好
在windows下,当我需要进行基本计算时,我会使用内置计算器。现在我想看看如果你只有一个外壳,常见的方法是什么。
谢谢
【问题讨论】:
来自this web page(对于csh 和衍生产品,因为你问过):
% @ x = (354 - 128 + 52 * 5 / 3)
% echo Result is $x
Result is 174
和
% set y = (354 - 128 + 52 / 3)
% echo Result is $y
Result is 354 - 128 + 52 / 3
注意不同的结果。
就个人而言,我坚持使用/bin/sh 并调用awk 或其他东西(以获得最大的可移植性),或者其他人展示了bash 方法。
【讨论】:
这里给出了很多很好的解决方案,但是 在 shell 中进行算术运算的“经典”方法是 与 expr。
【讨论】:
在$(( )) 内重击supports basic (integer only) arithmetic:
$ echo $(( 100 / 3 ))
33
$ myvar="56"
$ echo $(( $myvar + 12 ))
68
$ echo $(( $myvar - $myvar ))
0
$ myvar=$(( $myvar + 1 ))
$ echo $myvar
57
(直接从 IBM 链接复制的示例)
【讨论】:
((...)) 是相似的,但作为一个命令(不替代结果,$? 被设置),$[...] 是 $((...)) 的缩写。
$(( ... )) 是所有 SH 派生 shell 的有效语法,例如重击,Zsh。见The Open Group Base Specifications Issue 7
您可以随时使用 python 解释器,它通常包含在 linux 发行版中。
http://docs.python.org/tutorial/introduction.html#using-python-as-a-calculator
$ python
Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)]
Type "help", "copyright", "credits" or "license" for more information.
>>> 2+2
4
>>> # This is a comment
... 2+2
4
>>> 2+2 # and a comment on the same line as code
4
>>> (50-5*6)/4
5
>>> # Integer division returns the floor:
... 7/3
2
>>> 7/-3
-3
>>> # use float to get floating point results.
>>> 7/3.0
2.3333333333333335
等号 ('=') 用于为变量赋值。之后,在下一个交互提示之前不显示结果:
>>> width = 20
>>> height = 5*9
>>> width * height
900
当然还有math 模块可以解决您的大部分计算器需求。
>>> import math
>>> math.pi
3.1415926535897931
>>> math.e
2.7182818284590451
>>> math.cos() # cosine
>>> math.sqrt()
>>> math.log()
>>> math.log10()
【讨论】:
你也可以在 bc 或 expr 不够强大的地方轻松使用 Perl:
$ perl5.8 -e '$a=1+2; print "$a\n"'
3
【讨论】:
expr 也不是 csh/tcsh 内置命令,而是一个单独的命令,例如 perl
另一种选择是使用内置的 BC 命令
【讨论】: