Bash 将小数乘以整数
我从用户输入中读取价格。当我像这样将输入乘以 int 时
T=
"$((价格*数量))"|bc
;给出 第 272 行:12.00:语法错误:算术运算符无效(错误标记为“.00”) 或 .50
具体取决于用户输入。如何将这两个变量相乘并得到小数点后两位的总数?
I read price from user input. When i multiply the input with int like this
T=
"$((PRICE*QTY))"|bc
; gives
line 272: 12.00: syntax error: invalid arithmetic operator (error token is ".00")
or .50
depending on user input. How do i multiply these two variables and get a total with 2 decimal points?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这有效:
this works:
您还可以使用 awk
You can also use awk
您可以使用
乘数=0.8
经验=200
texp=
awk -vp=$mul -vq=$exp 'BEGIN{printf "%.2f" ,p * q}'
希望这会起作用。
You can use
mul=0.8
exp=200
texp=
awk -vp=$mul -vq=$exp 'BEGIN{printf "%.2f" ,p * q}'
Hope this is going to work.
首先,尝试在不使用
-l
标志的情况下使用bc(1)
进行浮点算术必然会给您一些有趣的答案:其次,
$ ((...))
是尝试在 shell 中进行算术运算;我的 bash 和 dash 都无法处理浮点数。如果您想在 shell 中进行算术运算,请注意
printf(1)
以及(可能)您 shell 的内置printf
函数。如果您想在 bc 中进行算术运算,请注意特殊变量scale
。First, trying to do floating-point arithmetic with
bc(1)
without using the-l
flag is bound to give you some funny answers:Second, the
$((...))
is an attempt to do arithmetic in your shell; neither mybash
nordash
can handle floating point numbers.If you want to do the arithmetic in your shell, note
printf(1)
as well as (probably) your shell's built-inprintf
function. If you want to do the arithmetic in bc, note the special variablescale
.