Sponsored Content
Top Forums UNIX for Dummies Questions & Answers check if a decimal number is greater than zero Post 302557650 by fpmurphy on Wednesday 21st of September 2011 08:54:45 PM
Old 09-21-2011
Quote:
[ ${a%%.*} -gt 0 ] && echo "ok" || echo "wrong"
This test will fail where a < 1.

Quote:
Unless you're using a really new ksh, numeric comparison doesn't work on numbers with decimal points.
Huh? Floating point support, what you call numbers with decimal points, has been available in ksh93 since 1993.

If you want to do floating point arithmetic from within a bash script, you need to use an external utility such as bc. See Floating Point Math in Bash
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Show result only if number is greater then

Hello all Im trying to write one liner that will show me results only if the result of the expression is greater then 0 For example: I do : find . -name "*.dsp" | xargs grep -c SecurityHandler the result are : ./foo/blah/a.dsp:0 ./foo/blah1/b.dsp:1 ./foo/blah2/c.dsp:2... (1 Reply)
Discussion started by: umen
1 Replies

2. Shell Programming and Scripting

Check numeric fields greater than zero, and delete lines if appropriate

This be the latest in my problems sorting through router logs... I'm half way there on a problem, but I've hit the limitation of my knowledge Got some router interface log files of type router01:GigabitEthernet9/24 is up, line protocol is up (connected) router01: 0 input errors, 0 CRC, 0... (7 Replies)
Discussion started by: Yorkie99
7 Replies

3. Shell Programming and Scripting

[Solved] Select the columns which have value greater than particular number

i have a file of the form 9488 14392 1 1.8586e-07 5702 7729 1 1.8586e-07 9048 14018 1 1.8586e-07 5992 12556 1 1.8586e-07 9488 14393 1 1.8586e-07 9048 14019 1 1.8586e-07 5992 12557 1 1.8586e-07 9488 14394 ... (1 Reply)
Discussion started by: vaibhavkorde
1 Replies

4. Shell Programming and Scripting

AWK: Cannot read Number of records greater than 1(NR>1)

Hi all, I have a tab-delimited text file of size 10Mb. I am trying to count the number of lines using, grep -c . sample.txtor wc -l < sample.txt or awk 'END {print NR}' sample.txtAll these commands shows the count as 1, which means they are reading only the first header line of the file.... (3 Replies)
Discussion started by: mehar
3 Replies

5. Shell Programming and Scripting

Need to check the value greater than or less than and give out put to a file

HI, I have one file which is as below cat /var/tmp/test1 | awk '{ print $3}'|grep -v affected Data ---------- 200.4 . The above 200 value is changable by the database script. Now I need a script that checks the value 200.4 and the script shoud give out put if value is more than 225 (2 Replies)
Discussion started by: phani4u
2 Replies

6. Shell Programming and Scripting

Egrep a greater than number

data: hello mr smith 400 you all ok? hello mrs. smith 700 you all ok? hello mr. everyone 150 you all ok? hello mr. you all 199 im lad you are ok using egrep, how can i grep out only lines that have a number greater than 250? cat data | egrep ..... can't use awk here. i was... (7 Replies)
Discussion started by: SkySmart
7 Replies

7. Shell Programming and Scripting

Egrep a number greater than in a column

i'm aware awk can do what i'm trying to do here. but i cant use awk in this scenario given the circumstance of this box. but i need to check if a number is a certain column is over a certain value, say for instance, 20. data: | 12 | 19 | 2000 | 9029333 |... (11 Replies)
Discussion started by: SkySmart
11 Replies

8. Shell Programming and Scripting

Grep lines for number greater than given number

Hello, I am newbie to bash scripting. Could someone help me with the following. I have log file with output as shown below **************************LOG************************* 11/20/2013 9:11:23.64 Pinging xx.xx.xx.xx with 32 bytes of data: 11/20/2013 9:11:23.64 Reply from xx.xx.xx.xx:... (4 Replies)
Discussion started by: meena_2013
4 Replies

9. UNIX for Dummies Questions & Answers

Greater than specific number

please let me know how to construct if then else by comparing two numbers if it is greater than 10000. I need to do some specific task executed. can you help me out in shell scripting plz. (6 Replies)
Discussion started by: ramkumar15
6 Replies
FLOAT(3)						   BSD Library Functions Manual 						  FLOAT(3)

NAME
float -- description of floating-point types available on OS X and iOS DESCRIPTION
This page describes the available C floating-point types. For a list of math library functions that operate on these types, see the page on the math library, "man math". TERMINOLOGY
Floating point numbers are represented in three parts: a sign, a mantissa (or significand), and an exponent. Given such a representation with sign s, mantissa m, and exponent e, the corresponding numerical value is s*m*2**e. Floating-point types differ in the number of bits of accuracy in the mantissa (called the precision), and set of available exponents (the exponent range). Floating-point numbers with the maximum available exponent are reserved operands, denoting an infinity if the significand is precisely zero, and a Not-a-Number, or NaN, otherwise. Floating-point numbers with the minimum available exponent are either zero if the significand is precisely zero, and denormal otherwise. Note that zero is signed: +0 and -0 are distinct floating point numbers. Floating-point numbers with exponents other than the maximum and minimum available are called normal numbers. PROPERTIES OF IEEE-754 FLOATING-POINT Basic arithmetic operations in IEEE-754 floating-point are correctly rounded: this means that the result delivered is the same as the result that would be achieved by computing the exact real-number operation on the operands, then rounding the real-number result to a floating-point value. Overflow occurs when the value of the exact result is too large in magnitude to be represented in the floating-point type in which the compu- tation is being performed; doing so would require an exponent outside of the exponent range of the type. By default, computations that result in overflow return a signed infinity. Underflow occurs when the value of the exact result is too small in magnitude to be represented as a normal number in the floating-point type in which the computation is being performed. By default, underflow is gradual, and produces a denormal number or a zero. All floating-points number of a given type are integer multiples of the smallest non-zero floating-point number of that type; however, the converse is not true. This means that, in the default mode, (x-y) = 0 only if x = y. The sign of zero transforms correctly through multiplication and division, and is preserved by addition of zeros with like signs, but x - x yields +0 for every finite floating-point number x. The only operations that reveal the sign of a zero are x/(+-0) and copysign(x,+-0). In particular, comparisons (x > y, x != y, etc) are not affected by the sign of zero. The sign of infinity transforms correctly through multiplication and division, and infinities are unaffected by addition or subtraction of any finite floating-point number. But Inf-Inf, Inf*0, and Inf/Inf are, like 0/0 or sqrt(-3), invalid operations that produce NaN. NaNs are the default results of invalid operations, and they propagate through subsequent arithmetic operations. If x is a NaN, then x != x is TRUE, and every other comparison predicate (x > y, x = y, x <= y, etc) evaluates to FALSE, regardless of the value of y. Additionally, predicates that entail an ordered comparison (rather than mere equality or inequality) signal Invalid Operation when one of the arguments is NaN. IEEE-754 provides five kinds of floating-point exceptions, listed below: Exception Default Result __________________________________________ Invalid Operation NaN or FALSE Overflow +-Infinity Divide by Zero +-Infinity Underflow Gradual Underflow Inexact Rounded Value NOTE: An exception is not an error unless it is handled incorrectly. What makes a class of exceptions exceptional is that no single default response can be satisfactory in every instance. On the other hand, because a default response will serve most instances of the exception satisfactorily, simply aborting the computation cannot be justified. For each kind of floating-point exception, IEEE-754 provides a flag that is raised each time its exception is signaled, and remains raised until the program resets it. Programs may test, save, and restore the flags, or a subset thereof. PRECISION AND EXPONENT RANGE OF SPECIFIC FLOATING-POINT TYPES On both OS X and iOS, the type float corresponds to IEEE-754 single precision. A single-precision number is represented in 32 bits, and has a precision of 24 significant bits, roughly like 7 significant decimal digits. 8 bits are used to encode the exponent, which gives an expo- nent range from -126 to 127, inclusive. The header <float.h> defines several useful constants for the float type: FLT_MANT_DIG - The number of binary digits in the significand of a float. FLT_MIN_EXP - One more than the smallest exponent available in the float type. FLT_MAX_EXP - One more than the largest exponent available in the float type. FLT_DIG - the precision in decimal digits of a float. A decimal value with this many digits, stored as a float, always yields the same value up to this many digits when converted back to decimal notation. FLT_MIN_10_EXP - the smallest n such that 10**n is a non-zero normal number as a float. FLT_MAX_10_EXP - the largest n such that 10**n is finite as a float. FLT_MIN - the smallest positive normal float. FLT_MAX - the largest finite float. FLT_EPSILON - the difference between 1.0 and the smallest float bigger than 1.0. On both OS X and iOS, the type double corresponds to IEEE-754 double precision. A double-precision number is represented in 64 bits, and has a precision of 53 significant bits, roughly like 16 significant decimal digits. 11 bits are used to encode the exponent, which gives an exponent range from -1022 to 1023, inclusive. The header <float.h> defines several useful constants for the double type: DBL_MANT_DIG - The number of binary digits in the significand of a double. DBL_MIN_EXP - One more than the smallest exponent available in the double type. DBL_MAX_EXP - One more than the exponent available in the double type. DBL_DIG - the precision in decimal digits of a double. A decimal value with this many digits, stored as a double, always yields the same value up to this many digits when converted back to decimal notation. DBL_MIN_10_EXP - the smallest n such that 10**n is a non-zero normal number as a double. DBL_MAX_10_EXP - the largest n such that 10**n is finite as a double. DBL_MIN - the smallest positive normal double. DBL_MAX - the largest finite double. DBL_EPSILON - the difference between 1.0 and the smallest double bigger than 1.0. On Intel macs, the type long double corresponds to IEEE-754 double extended precision. A double extended number is represented in 80 bits, and has a precision of 64 significant bits, roughly like 19 significant decimal digits. 15 bits are used to encode the exponent, which gives an exponent range from -16383 to 16384, inclusive. The header <float.h> defines several useful constants for the long double type: LDBL_MANT_DIG - The number of binary digits in the significand of a long double. LDBL_MIN_EXP - One more than the smallest exponent available in the long double type. LDBL_MAX_EXP - One more than the exponent available in the long double type. LDBL_DIG - the precision in decimal digits of a long double. A decimal value with this many digits, stored as a long double, always yields the same value up to this many digits when converted back to decimal notation. LDBL_MIN_10_EXP - the smallest n such that 10**n is a non-zero normal number as a long double. LDBL_MAX_10_EXP - the largest n such that 10**n is finite as a long double. LDBL_MIN - the smallest positive normal long double. LDBL_MAX - the largest finite long double. LDBL_EPSILON - the difference between 1.0 and the smallest long double bigger than 1.0. On ARM iOS devices, the type long double corresponds to IEEE-754 double precision. Thus, the values of the LDBL_* macros are identical to those of the corresponding DBL_* macros. SEE ALSO
math(3), complex(3) STANDARDS
Floating-point arithmetic conforms to the ISO/IEC 9899:2011 standard. BSD
March 28, 2007 BSD
All times are GMT -4. The time now is 03:33 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy