To expand a little on what Corona68 said... Although 1.12 is a nice terminating decimal value, the corresponding binary number is a non-terminating sequence (just like 1/3 in decimal arithmetic is a non-terminating .33333...).
For IEEE Std 754 double precision floating point, you get 15-17 significant digits for individual values. As you perform multiplications and divisions, the founding errors add up. If you add or subtract small numbers to or from large numbers, the small numbers may disappear completely.
When you assign a double precision floating point value to an integer object, the result is truncated, not rounded; but you can do the rounding on your own. To see what happened, try this:
which produces:
These 2 Users Gave Thanks to Don Cragun For This Post:
hello everybody!
I want to create a file with permissions for read, write, and execute to everybody using C, so I write this code:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(){
int fileDescriptor;
fileDescriptor =... (2 Replies)
hi
I am having two variables namely a=7 & b=8. I have to subtract these two variables. I am using the command
c=`expr $a / $b`
When I check the value of c, it comes out to be zero.
Please help.
Regards
Rochit (9 Replies)
Hi,
I am writing a script that among other things will be checking for various files on mount points. One of the conditions is that unless the server has failed over the df command will show root ( / ). If when checking the files the script comes across /, I want it to skip it, otherwise to... (2 Replies)
i have a script that is doing the following:
awk 'BEGIN {FS=","} ; {printf("%.10f",($5 - $2)/(3 * $3))}' data > test
now some records in $3 contain zeroes. i don't want to remove those records. is it possible to check for division by zero and then write a "N/A" for that record in the o/p... (2 Replies)
Hello,
I am searching for a way to calculate for example 10/100 within a shellscript and the result should be 0.1 and not just 0.
Every alternative i tried just results 0
Thank you in advance
2retti (6 Replies)
Hi,
from the manual
listen(2): listen for connections on socket - Linux man page
It has a parameter called backlog and it limits the maximum length of queue of pending list.
If I set backlog to 128, is it means no more than 128 packets can be handled by server?
If I have three... (3 Replies)
I received error "awk: division by zero" while executing the following statement.
SunOS 5.10 Generic_142900-15 sun4us sparc FJSV,GPUZC-M
echo 8 | awk 'END {printf ("%d\n",NR/$1 + 0.5);}' file1.lst
awk: division by zero
Can someone provide solution?
Thanks
Please use code... (11 Replies)
hi,
The below commands result only the whole number(not giving the decimal values).
pandeeswaran@ubuntu:~$ echo 1,2,3,4|sed 's/,/\//g'|bc
0
pandeeswaran@ubuntu:~$ echo 1000,2,3|sed 's/,/\//g'|bc
166
How to make it to return the decimal values?
Thanks (5 Replies)
I have a function that outputs 3 lines for each result and I want to know how many results there are.
so for example
function | wc -l
24
but I want to see the result 8.
so is there a easy way to divide the result? (5 Replies)
Discussion started by: yatici
5 Replies
LEARN ABOUT OSX
fcvt
ECVT(3) BSD Library Functions Manual ECVT(3)NAME
ecvt, fcvt, gcvt -- convert double to ASCII string
SYNOPSIS
#include <stdlib.h>
char *
ecvt(double value, int ndigit, int * restrict decpt, int * restrict sign);
char *
fcvt(double value, int ndigit, int * restrict decpt, int * restrict sign);
char *
gcvt(double value, int ndigit, char *buf);
DESCRIPTION
These functions are provided for compatibility with legacy code. New code should use the snprintf(3) function for improved safety and porta-
bility.
The ecvt(), fcvt() and gcvt() functions convert the double precision floating-point number value to a NUL-terminated ASCII string.
The ecvt() function converts value to a NUL-terminated string of exactly ndigit digits and returns a pointer to that string. The result is
padded with zeroes from left to right as needed. There are no leading zeroes unless value itself is 0. The least significant digit is
rounded in an implementation-dependent manner. The position of the decimal point relative to the beginning of the string is stored in decpt.
A negative value indicates that the decimal point is located to the left of the returned digits (this occurs when there is no whole number
component to value). If value is zero, it is unspecified whether the integer pointed to by decpt will be 0 or 1. The decimal point itself
is not included in the returned string. If the sign of the result is negative, the integer pointed to by sign is non-zero; otherwise, it is
0.
If the converted value is out of range or is not representable, the contents of the returned string are unspecified.
The fcvt() function is identical to ecvt() with the exception that ndigit specifies the number of digits after the decimal point (zero-padded
as needed).
The gcvt() function converts value to a NUL-terminated string similar to the %g printf(3) format specifier and stores the result in buf. It
produces ndigit significant digits similar to the %f printf(3) format specifier where possible. If ndigit does allow sufficient precision,
the result is stored in exponential notation similar to the %e printf(3) format specifier. If value is less than zero, buf will be prefixed
with a minus sign. A decimal point is included in the returned string if value is not a whole number. Unlike the ecvt() and fcvt() func-
tions, buf is not zero-padded.
RETURN VALUES
The ecvt(), fcvt() and gcvt() functions return a NUL-terminated string representation of value.
WARNINGS
The ecvt() and fcvt() functions return a pointer to internal storage space that will be overwritten by subsequent calls to either function.
The maximum possible precision of the return value is limited by the precision of a double and may not be the same on all architectures.
The snprintf(3) function is preferred over these functions for new code.
SEE ALSO printf(3), strtod(3)STANDARDS
The ecvt(), fcvt() and gcvt() functions conform to IEEE Std 1003.1-2001 (``POSIX.1'').
BSD December 1, 2002 BSD