導航:首頁 > 編程系統 > linux腳本小數

linux腳本小數

發布時間:2023-09-04 01:16:34

linux 除法保留小數

你可以這樣
res=$(printf "%.5f" `echo "scale=5;1/3"|bc`)

%.5f 和 scale=5都表示小數點後面取5位

㈡ linux 小數點如何相加

shell不可直接進行小數運算,可以用去其他方法,這是我想到的
1:用bc方法,你可以去查內查
echo $us+$sy | bc
如我的結果容
# echo $a
8.8
# echo $b
9.1
# echo $a+$b | bc
17.9
2:用awk方法
# awk -v a=$a -v b=$b 'BEGIN{print a+b}'
17.9

㈢ 在Linux系統下,編寫一個Shell腳本,從鍵盤讀入5個整數,然後顯示最大數、最小數、和平均數。

#!/bin/bash

#任意輸入5個數,判斷最大值,最小值,總和

s=0

read -p "please input:" num

s=$(($s+$num))

max=$num

min=$num

avg=$(($s/5))

for i in `seq 4`

do

read -p "please input:" num
s=$(($s+$num))

if [ $num -le $min ];then
min=$num
fi

if [ $num -ge $max ];then
max=$num
fi

done

echo max:$max min:$min avg:$avg

(3)linux腳本小數擴展閱讀:內

for循環:

一般格式為:

for var in item1 item2 ... itemN

do

command1

command2

...

commandN

done

寫成一容行:

for var in item1 item2 ... itemN; do command1; command2… done;

㈣ Linux 在腳本裡面使用變數進行計算時怎麼才能保留小數位

bc是一個用於數學運算的高級工具,這個精密計算器包含了大量的選項。可以藉助它執行浮點數運算並應用一些高級函數:

#!/bin/bash
a=100
b=3
letc=a/b
echo$c
d=`bc<<<'scale=2;100/3'`
echo$d
e=`bc-l<<<'100/3'`
echo$e

上述代碼的輸出為:

33
33.33
33.33333333333333333333

㈤ linux下如何在shell中執行小數的運算

你可以用計抄算工具bc來算,再導回shell
如:

#!/bin/sh
x=0.02
x=`echo "scale=3;$x+0.02" | bc `
echo $x

如果要控制循環,x<0.06顯然是不能用的,但你可以用x<6,然後把最終結果用bc除以100唄~

㈥ Linux求數組長度為10000的浮點數(精確小數點右4位)計算值

既然題主沒有說要求用什麼語言,那我就用c++11實現了。

#include<iostream>

#include<random>

#include<thread>

#include<chrono>

#include<algorithm>

#include<iomanip>


usingnamespacestd;


constintsize=10000;

floattable[size];


intmain(){

random_deviceengine;

uniform_real_distribution<float>dist(0,1);

floatsum;


for(auto&i:table){

i=dist(engine);

}


autot_start=chrono::system_clock::now();

sum=accumulate(table,table+size,0.0);

autot_end=chrono::system_clock::now();

autoration=std::chrono::ration_cast<std::chrono::microseconds>(t_end-t_start).count();

cout<<"sumofthemainthread:"<<fixed<<setprecision(4)<<sum<<endl;

cout<<"timeelapsed:"<<ration<<"microseconds"<<endl;


floatsum_child[4];

autofun=[&](intindex){

sum_child[index]=accumulate(table+index*size/4,table+(index+1)*size/4,0.0);

};


t_start=chrono::system_clock::now();

threadthrd_table[4]={

thread(fun,0),thread(fun,1),thread(fun,2),thread(fun,3)

};

for(auto&thrd:thrd_table){

thrd.join();

}

sum=0;

sum=accumulate(sum_child,sum_child+4,0.0);

t_end=chrono::system_clock::now();

ration=std::chrono::ration_cast<std::chrono::microseconds>(t_end-t_start).count();

cout<<"sumofchildthreads:"<<fixed<<setprecision(4)<<sum<<endl;

cout<<"timeelapsed:"<<ration<<"microseconds"<<endl;


return0;

}


編譯:

g++-std=c++11test.cc-lpthread-otest

運行:

./test

結果:

sumofthemainthread:4976.8721

timeelapsed:0ms

sumofchildthreads:4976.8721

timeelapsed:0ms


由於隨機性每次加和的數值不同,但是精確到毫秒時,時間測出來妥妥的都是零。就是數據量太小,實際運行時間在微秒量級,當然看不出來。

精度改為微秒以後:

sumofthemainthread:4957.9878

timeelapsed:113microseconds

sumofchildthreads:4957.9878

timeelapsed:560microseconds

多線程反而比單線程慢,因為啟動線程本身也需要時間。

數據量再增大1000倍:

sumofthemainthread:4999892.0000

timeelapsed:25313microseconds

sumofchildthreads:4999892.0000

timeelapsed:8986microseconds

這回看著正常多了吧

閱讀全文

與linux腳本小數相關的資料

熱點內容
linux裝apache 瀏覽:272
手機谷歌打不開網站怎麼辦 瀏覽:110
燈控台編程好了怎麼使用 瀏覽:342
如何用金山毒霸切斷網路連接 瀏覽:873
怎麼設置文件打開密碼怎麼設置 瀏覽:5
網路小說用什麼寫 瀏覽:956
擴展名為rm的文件如何打開 瀏覽:707
導入android項目沒有rjava 瀏覽:899
帶英文和數字的文件名 瀏覽:843
黃山數控編程培訓在哪裡 瀏覽:111
win10俠盜5無限讀取 瀏覽:557
js工廠模式 瀏覽:927
iphone6s清理緩存 瀏覽:465
ug編程怎麼選不上字體 瀏覽:435
pc文件加密哪個好 瀏覽:393
蘋果軟體更新4位密碼 瀏覽:96
手機如何將文件弄成文件夾 瀏覽:275
swordigo第四關 瀏覽:996
t420win10網卡驅動 瀏覽:805
ps怎麼打開dxf文件怎麼打開 瀏覽:698

友情鏈接