Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在我的bash脚本中隐藏或删除零?_Regex_Bash_Variables_Math_Logic - Fatal编程技术网

Regex 如何在我的bash脚本中隐藏或删除零?

Regex 如何在我的bash脚本中隐藏或删除零?,regex,bash,variables,math,logic,Regex,Bash,Variables,Math,Logic,这是我的剧本: echo -n "number 1 :"; read bil1 echo -n "number 2 :"; read bil2 multiple=$(echo $bil1*$bil2 |bc -l |sed -e 's/^\./0./' -e 's/^-\./-0./'); echo " Your result : $bil1 * $bil2 = $multiple "; 如果我为$bil1输入9.5,为$bil2输入300,结果是2850.0 我想要结果: Your resu

这是我的剧本:

echo -n "number 1 :";
read bil1
echo -n "number 2 :";
read bil2
multiple=$(echo $bil1*$bil2 |bc -l |sed -e 's/^\./0./' -e 's/^-\./-0./');
echo " Your result : $bil1 * $bil2 = $multiple ";
如果我为
$bil1
输入
9.5
,为
$bil2
输入
300
,结果是
2850.0

我想要结果:

Your result : 9.5 * 300 = 2850

如何隐藏或删除结果末尾的零?例如,仅显示
2850

将以下部分添加到sed命令(在末尾):

(删除一个点,然后在末尾任意多个零,不加任何内容。)


顺便说一下,您最好将
echo$bil1*$bil2
替换为
echo“$bil1*$bil2”
,否则根据当前目录的内容,您可能会得到奇怪的效果。

将以下部分添加到sed命令中(在末尾):

(删除一个点,然后在末尾任意多个零,不加任何内容。)


顺便说一下,您最好将
echo$bil1*$bil2
替换为
echo“$bil1*$bil2”
,否则根据当前目录的内容,您可能会得到奇怪的效果。

bc
的正常浮点输出分配给变量,然后使用参数扩展对其进行修剪:

multiple=$(echo "$bil1*$bil2" | bc -l)
# Not POSIX, unfortunately
shopt -s extglob
multiple=${multiple%.+(0)}
echo " Your result : $bil1 * $bil2 = $multiple "
POSIX解决方案是让
printf
完成工作

multiple=$(echo "$bil1*$bil2" | bc -l)
printf " Your result : %1.1f * %d = %1.0f\n" $bil1 $bil2 $multiple 

bc
的正常浮点输出分配给变量,然后使用参数展开对其进行修剪:

multiple=$(echo "$bil1*$bil2" | bc -l)
# Not POSIX, unfortunately
shopt -s extglob
multiple=${multiple%.+(0)}
echo " Your result : $bil1 * $bil2 = $multiple "
POSIX解决方案是让
printf
完成工作

multiple=$(echo "$bil1*$bil2" | bc -l)
printf " Your result : %1.1f * %d = %1.0f\n" $bil1 $bil2 $multiple 

使用bash的内置
printf
控制输出

$ bil1=9.5; bil2=300; printf "%.0f\n" $(bc -l <<< "$bil1 * $bil2")
2850

$bil1=9.5;bil2=300;printf“%.0f\n”$(bc-l使用bash的内置
printf
控制输出

$ bil1=9.5; bil2=300; printf "%.0f\n" $(bc -l <<< "$bil1 * $bil2")
2850

$bil1=9.5;bil2=300;printf“%.0f\n”$(bc-l@Vash2593您在看哪个脚本?@Vash2593否,第五行中的
$bil1*$bil2
当前未被引用。@Vash2593您在看哪个脚本?@Vash2593否,第五行中的
$bil1*$bil2
当前未被引用。如果要舍入到下一个整数,这可能是最好的解决方案;如果只有一个y想要在句点后删除多余的零(但不是其他数字),它不起作用。如果要舍入到下一个整数,这可能是最好的解决方案;如果只想在句点后删除多余的零(但不是其他数字),它就不起作用。