Dividing two numbers in unix


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Dividing two numbers in unix
# 1  
Old 06-14-2012
Dividing two numbers in unix

Hi,

I have written this code the division of two numbers and multiply it by hundred (to get the percent)
Code:
echo "script running for the 1st time"
cp value_directory_present.txt /home/mysql_cnbc/value_directory_past.txt
rm -f test6.txt value_directory_present.txt
else
y1=`awk '{print $1}' value_directory_past.txt`
z=`expr $y - $y1`
echo $z
if [ $z = 0 ];then
echo "rate is zero"
rm -f value_directory_present.txt test6.txt test7.txt
break
else
z1=`$z/$y1`
echo $z1
z2=`100 * $z1`


when i am executing it i am getting this error .
Code:
+ find . -type f -name value_directory_past.txt
+ var=./value_directory_past.txt
+ [ ./value_directory_past.txt == '' ]
+ awk '{print $1}' value_directory_past.txt
+ y1=23789264
+ expr 23789328 - 23789264
+ z=64
+ echo 64
64
+ [ 64 = 0 ]
+ 64/23789264

test4.sh: line 32: 64/23789264: not found

+ z1=''
+ echo

Please suggest.Smilie

Last edited by Franklin52; 06-14-2012 at 11:03 AM.. Reason: Please use code tags for data and code samples
# 2  
Old 06-14-2012
odd... you know to use "expr" here:

Code:
z=`expr $y - $y1`

and then forget to use it here:

Code:
z1=`$z/$y1`

The answer would be:
Code:
z1=`expr $z/$y1`

---------- Post updated at 10:14 AM ---------- Previous update was at 10:13 AM ----------

you will have a similar issue with z2 as well.
# 3  
Old 06-14-2012
after using expr i am getting some garbage value while executing
Code:
+ expr 68/23789332
+ z1=68/23789332
+ echo 68/23789332
68/23789332
+ expr 100 0 $'0Ö\E' '06:03:59] 06:08:50 06:09:20 06:11:00 06:12:47 15837921 'è:5Q6 $'Aborted\nAborted\nAborted]'
expr: syntax error
 
+ z2='
+ echo 'rate is %


Last edited by Franklin52; 06-15-2012 at 04:29 AM.. Reason: Please use code tags for data and code samples
# 4  
Old 06-14-2012
I'd use bc instead of expr for this. With bc you can define the number of digits after the decimal point.
Code:
$ x=64
$ z=$(echo "scale=10; $x / 23789264 * 100" |bc)
$ echo $z
.0002690200
$ z=`expr $x / 23789264`
$ z1=`expr $z \* 100`
$ echo $z1
0
$

Edit: you need spaces around the devision mark with any of those techiques...

Last edited by cero; 06-14-2012 at 11:49 AM..
This User Gave Thanks to cero For This Post:
# 5  
Old 06-14-2012
In integer arithmetic, always do your multiples before your divides.
However with these numbers the answer is always going to be zero because the percentage is so small.

If you need to see the actual value, try the bc command set to say six decimal places:
Code:
echo "scale=6;((64 * 100) / 23789264)"|bc

.000269

Note that very few shells can deal with decimal places in numbers.


Edit: Post crossed with cero.
This User Gave Thanks to methyl For This Post:
# 6  
Old 06-14-2012
i can not multiply the difference before divison as i am trying to find out percentage change.

Any other way to get percentage?Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Dividing a column by it's last number

Hi! I have a file as below: 0.000145 5.82056e-08 0.000146 6.82088e-08 0.000150 7.42115e-08 0.000156 8.52142e-08 0.000176 8.82169e-08 0.000178 9.82197e-08 I'd like to divide the values of the second column by its last entry (here 9.82197e-08). I would be thankful if someone could... (6 Replies)
Discussion started by: Setareh12
6 Replies

2. Shell Programming and Scripting

Dividing by zero

Does anyone know how to include as a script maybe an "echo" warning that explains that if a user uses the second number "zero" when dividing, that the result will BE "zero." I need, example: 5/0 (second number) = 0, in script form. current script: echo "Enter a number" read num1 echo... (4 Replies)
Discussion started by: jefferj54
4 Replies

3. Shell Programming and Scripting

Dividing one file into several files

Hello, I am using Awk in UBUNTU 12.04. I have a file as follows, the first column represents the name of populations, in my real file, I have 47 populations and 2172 lines in total with about 47000 fields. ABO_1 1 2 ABO_1 1 2 ABO_2 1 1 GPO_1 1 1 GPO_1 2 2 GPO_2 1 0 GPO_2 2 0 I want... (3 Replies)
Discussion started by: Homa
3 Replies

4. Shell Programming and Scripting

Issues when dividing

Hi, I do have a very simple task to divide 2 variables and display the result. I CANNOT use bc when i try var1=2 var2=4 var3=$(($var1 / $var2)) echo $var3 the output is always 0 What can I change to get a dotted decimal result such as 0.5 ? Thanks! (5 Replies)
Discussion started by: svetoslav_sj
5 Replies

5. Shell Programming and Scripting

Dividing file into columns

Hi, I have a file containing 28048 lines and I would like to split it into a a file with 3506 lines and 8 columns? In column 1, I would like to have the first 3506 lines, in columns 2 the second 3506 lines and so on. I've been looking around in the forum but I found very specific cases. Is... (1 Reply)
Discussion started by: f_o_555
1 Replies

6. Shell Programming and Scripting

Dividing user Array by 2

Hello! Im trying to divid the numbers inputed by <STDIN> by 2. This is what I have: print "The input array divided by 2 is as follows:\n"; foreach ((@userArray)/2) {print} But it is not dividing by 2? Any help is valuable!! Ben (3 Replies)
Discussion started by: bigben1220
3 Replies

7. Shell Programming and Scripting

Problem with dividing

Hi All, I have two variables like below.. ETIMEHR =03 #END TIME HOUR ETIMEMIN=02 #END TIME MIN Now I'm converting the min to hour by deviding it by 60 ETIMEMINCONV=`echo "scale=2; $ETIMEMIN/60" | bc` but when i print ETIMEMINCONV instead of getting... (6 Replies)
Discussion started by: smarty86
6 Replies

8. UNIX for Dummies Questions & Answers

Dividing float values

Hi I know its a dumb question but can any one please explain me the difference of executing a shell script in the following 2 ways. . script.sh sh script.sh I have a problem if I execute the following code as sh script.sh DB_CNT_ALW=0.20 SCT_VAR=0.05 if ; then echo "== Difference... (3 Replies)
Discussion started by: shash
3 Replies

9. Programming

dividing a file into two

Hi .. I have a file which contains a list of numbers like.. 1923,1924,1925,1926,1927,1928,1929,1930,1931,1932,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2027, 2028,2029,2030,2031,2032,2115,2116,2117,2118,2119,2120,2121,2122,2123,2124,2125,2126,2127,2128,2129,2130,2131,2132,... (2 Replies)
Discussion started by: jazz
2 Replies

10. UNIX for Dummies Questions & Answers

dividing the screen >>>

Hi! Is there is any way to divide the screen when I use UNIX shells (I have RedHat 7.1)? I have to see the command promt and process some data from very long file at the same time (I work with PThreads). Some "pseudo-windows" in text mode, huh? =) Thanks in advance and don't be angry =) (4 Replies)
Discussion started by: ShockTeam
4 Replies
Login or Register to Ask a Question