Javascript to force decimals in 0.25 steps


 
Thread Tools Search this Thread
Top Forums Web Development Javascript to force decimals in 0.25 steps
# 1  
Old 09-24-2014
Javascript to force decimals in 0.25 steps

I have a few input values on a form that must be in 0.25 steps, how do I force this ? alternatively how do I automatically enter the correct vales as the user types and disallow any other values ie: as the firstnumber is typed (say 3) then .00 is added, then as the decimal point and the first decimal value is entered which must be either 0, 2, 5 or 7 then the appropriate second decimal is added which would be 0 or 5 as appropriate. I guess I will need an alert for any other values that might be entered in error?

I have googled and there are plenty of solutions to round to the nearest decimal but not to actually force 0.25 steps
I am sorry, I have absolutely no idea where to startSmilie
# 2  
Old 09-24-2014
You mean like this ,

Code:
<script type="text/javascript">
   var fixed = 0.25
   function TextChange(e)
   { 
        if (isNaN(e.value)){ alert('must be numeric'); return  }
       
	var v = Math.floor( (parseFloat( e.value.toString().split(".")[1].substring(0,2) ) * 0.01)/fixed ); 
     e.value  =  (e.value | 0 ) +  fixed * (isNaN(v) ? 0 : v);   
   }
</script>

<input type="number" onchange="TextChange(this)" />


Last edited by Akshay Hegde; 09-24-2014 at 08:54 AM..
# 3  
Old 09-24-2014
Yes nearly, I need there to be exactly 2 decimal places ie 1.00, 1.25, 1.50, 1.75, etc

Or the other alternative leave the value as typed by the user and give an pop up error if any other decimal is used?

Thanks for your help.
# 4  
Old 09-26-2014
OK. javascript uses floating point arithmetic operations (as compiled from C code).

Floating point does not always represent some numbers precisely, especially after several operations, e.g., addition, multiplication, etc. see -

What Every Computer Scientist Should Know About Floating-Point Arithmetic

You can convert fp -> string then display. You can also use convert.log() with a %f format specifier if your version supports a %f format specifier.
see:
JavaScript equivalent to printf/string.format - Stack Overflow
# 5  
Old 09-26-2014
Quote:
Floating point does not always represent some numbers precisely
0.5 and 0.25 are simple binary fractions of 1, floating point will represent it perfectly as long as it has 2+ bits of fraction. For 32-bit floats, anything inside +/-2 million will work perfectly.

Computationally speaking, this is the most direct method: Multiply by 4, strip off decimals, divide by 4.
Code:
Math.floor(var*4) / 4


Last edited by Corona688; 09-26-2014 at 03:04 PM..
# 6  
Old 09-30-2014
And then as the final step, force it to two decimals as follows:
Code:
num.toFixed(2)

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

how to find the field has more than 2 decimals

Hi Gurus, I have below sample file, I need find the line which 2rd field has more than 2 decimals. in sample file, I need to find xyz, 123456.789 abc, 1234.45, def xyz, 123456.789, xxx bce, 1234.34, xxx thanks in advance (13 Replies)
Discussion started by: ken6503
13 Replies

2. Programming

Decimals reading Python

Hello, i'm new in python. Consider that i have this function that read me some data from a serial : def GetData(): line = open(serialx).read() hash = line.find("#") when = line count = line # print when, count, line return (float(when), int(count)) it gives me the result... (2 Replies)
Discussion started by: Board27
2 Replies

3. Shell Programming and Scripting

Getting date in seconds with decimals

I am trying to get date to display decimal Desired output 1350386096256.12 I know this can be done with printf, but are not able to make it work. I have tested this and many otherprintf "%.2f" $(($(date +%s%N)/1000000)) (8 Replies)
Discussion started by: Jotne
8 Replies

4. Shell Programming and Scripting

Round up the decimals

Hi All, I would like to do the following in the shell script 561.76 to 562 I tried using this echo 'scale=0; 749 * 75 /100 ' | bc but just returned only 561 Please help me . I appreciate your help Thanks rajeevm (13 Replies)
Discussion started by: rajeevm
13 Replies

5. Shell Programming and Scripting

Grep wholenumbers / decimals

Hi I have a large file in which I need to search for certain whole numbers and print the whole line. I'm currently trying this via command line using grep but grep is also matching the decimal values and i just want to return the matching whole numbers (the entire line) Example File ddggg ... (7 Replies)
Discussion started by: duckeggs01
7 Replies

6. UNIX for Dummies Questions & Answers

Regarding Decimals in Cshell

Hello... I am new to unix and I am wondering if in a C-shell script , Are we supposed to use only whole numbers........ for example..if a program needs to calculate the average of some numbers........ @ avg = (($1 +$2 + $3)/3)) is returning a whole number.........How can a decimal be achieved... (1 Reply)
Discussion started by: ravindra22
1 Replies

7. Shell Programming and Scripting

Decimals in TCSH

Hello, I want to run a loop with non-integer values (which I know I can't) so I've created a loop of integers and divided it by 10. However, these values are always rounded down to 1 significant figure. How do I get the script to keep and use the decimal value? My script is as follows #... (1 Reply)
Discussion started by: DFr0st
1 Replies

8. Shell Programming and Scripting

convert Regular decimals to Packed decimals

Hi, I am trying to find if there is a way to convert regular decimal values to Paced decimal values. I tried to find a c program but I could get a Packed converted to regular decimal not the other way round. If not unix please let me know if any other progrimming language I can use to do... (2 Replies)
Discussion started by: mgirinath
2 Replies

9. Shell Programming and Scripting

Bourne and decimals??

I need to get 15% of the variable exer1 to be added to other exercises so far, i've got exer1=$1 aver=`expr $exer \* .15` but i keep getting an error that an integer value was expected. Is there anyway around this? (1 Reply)
Discussion started by: kdyzsa
1 Replies

10. Shell Programming and Scripting

handle decimals

Hi All, How we can handle decimals in (Float) in UNIX. a=73 b=5 c=`expr a / b` i am getting 14 but i need full 14.6 . Can any one help me pls? (1 Reply)
Discussion started by: subin_bala
1 Replies
Login or Register to Ask a Question