Math


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Math
# 8  
Old 05-06-2015
What would be wrong with a simple
Code:
awk '{sum+=$0} END {printf "$%.2f\n", sum/100}' file
$600.00

(except for the caveat that corona688 pointed out)?
# 9  
Old 05-06-2015
Hi.

Also utility numsum, part of:
Code:
num-utils - programs for dealing with numbers from the command line

in systems like:
Code:
OS, ker|rel, machine: Linux, 3.16.0-4-amd64, x86_64
Distribution        : Debian 8.0 (jessie)

For example, assuming numbers are in file data3,
Code:
numsum data3

produces:
Code:
60000

Best wishes ... cheers, drl
# 10  
Old 05-06-2015
Quote:
Originally Posted by RudiC
What would be wrong with a simple
Code:
awk '{sum+=$0} END {printf "$%.2f\n", sum/100}' file
$600.00

(except for the caveat that corona688 pointed out)?
Floating point math. Good enough for some, not for others Smilie

FP varies so much and there are many different variables....

Avoid and you'll pass an audit easier!
# 11  
Old 05-06-2015
Code:
A=`cat my_file.txt | awk '{sum+=$1} END { print sum}'`
B=$(echo "scale=2; $A / 100" | bc)

echo "$"$B

# 12  
Old 05-07-2015
Using integers isn't the only point here. The size of the sum is what matters in this problem. Since awk uses double precision floating point arithmetic (even when processing integers), you can have a problem if the accumulated sum (in cents) is 15 or more digits (i.e., more than $999,999,999.99). So, if your final result is less than 1 billion dollars, RudiC's script should be fine. If your result could be bigger, you can use shell and bc or dc to get the results you want no matter how big the sum is:
Code:
#!/bin/ksh
(echo '2k0[$]P'; while read line
	do	echo " $line"
	done < my_file.txt
echo '100/pq') | dc

printf '$'
(echo 'a=0;scale=2'; while read line
	do	echo "a+=$line"
	done < my_file.txt
	echo 'a/100'
) | bc

On most UNIX and UNIX-like systems, bc is a front-end to dc. Therefore, I tend to use dc instead of bc to avoid creating the extra process. But, bc is in the standards and dc isn't. So, if your system doesn't have dc or you want your script to be portable to systems that might not have dc, use bc.

Both sections of the above script print:
Code:
$600.00

when your sample input is contained in my_file.txt.
This User Gave Thanks to Don Cragun For This Post:
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Linux Math Help

I am struggling with scripting this challenge a friend and I have. You have file1 and its contents is a single number you have file 2 and its contents are a different number you want to add file1 to file2 and have the output be put into file3 (3 Replies)
Discussion started by: minkyboodle
3 Replies

2. Programming

Math function with C

I have int miles, yards; float kilometers; float kilometers2; miles = 26; yards = 385; kilometers = 1.609 * (miles + yards / 1760.0); where int/float remains a float. How ever if I change it to kilometers = 1.609 * (miles + yards / 1760); ... (7 Replies)
Discussion started by: Fingerz
7 Replies

3. Shell Programming and Scripting

Math Tool

Hi all, I am new to PERL scripts, and i have made my first script which i am posting here. This math tool performs all basic arithmatic functions. #!/usr/bin/perl print "\t----------Welcome to Maths Tool-----------\n"; do { print "Enter your choice :"; print... (2 Replies)
Discussion started by: PranavEcstasy
2 Replies

4. Shell Programming and Scripting

Need help with AWK math

I am trying to do some math, so that I can compare the average of six numbers to a variable. Here is what it looks like (note that when I divide really big numbers, it isn't a real number): $ tail -n 6 named.stats | awk -F\, '{print$1}' 1141804 1140566 1139429 1134210 1084682 895045... (3 Replies)
Discussion started by: brianjb
3 Replies

5. Shell Programming and Scripting

math help

$ x=1 $ y=1.5 $ z=$((x*y)) bash: 1.5: syntax error: invalid arithmetic operator (error token is ".5") What's wrong? (2 Replies)
Discussion started by: rockbike
2 Replies

6. UNIX for Dummies Questions & Answers

math in unix

I have 2 variables a=2 b=1 i want to add a and b how do i do this in unix using just the echo command and by assigning it to a different variable like c? (13 Replies)
Discussion started by: khestoi
13 Replies

7. Programming

math.h in makefile

Hey all, How do I link the math library in a gnu make makefile? I have tried using -lm with the CFLAGS varibale - flags like -Wall and -ggdb work, but -lm does not. I am running gcc - 4.1.2 on a linux machine. (2 Replies)
Discussion started by: kermit
2 Replies

8. Programming

some math problems in C

I want to calculate secant method using C language That is a program----> #include<stdio.h> #include<math.h> #include<stdlib.h> main() { double fx(double x); double x0,x1,x2,f0,f1,f2,err; int n,i; printf("\n\n f(x) =x*x*x-5*x-7"); printf("\n\nEnter an interval in" ... (4 Replies)
Discussion started by: cdfd123
4 Replies

9. Programming

something about <math.h>

Hi, I got an easy problem for you but really difficult for me 'cause I am pretty new to this field I got header file <math.h> included in my .c file , then I write the code as below: k = sqrt(i); /* both variables k and i are int */ then I cc temp.c it says like this undefined... (4 Replies)
Discussion started by: blf0
4 Replies

10. Programming

math.h not working? o.0

Alright, umm i cant get this to work. im looking at some example and a book i have. when i try to compile my program i get an error message. ld: 0711-317 ERROR: Undefined symbol: .sqrt ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. I did #include<math.h> after my... (2 Replies)
Discussion started by: primal
2 Replies
Login or Register to Ask a Question