Enjoy an ad free experience by logging in. Not a member yet? Register.

Results 1 to 5 of 5

05252012, 12:40 AM #1
 Join Date
 May 2012
 Posts
 6
 Thanks
 4
 Thanked 0 Times in 0 Posts
Scientific Notation to standard decimal
I'm using java to convert a number that was input by the user in a text box. The user then selects the conversion to do, and then it outputs the converted number to another text box.
However, the conversion equations use scientific notation. I want to make another text box that takes the result in scientific notation and turns it into standard decimal format.
example:
x=1
equation is x*1e6
first result text box would read
1e6
second result text box would read
1000000
I've never had to do something like this before, so I'm clueless as to where to even begin. Google proved kinda useless. Couple of ideas but I didn't understand them or couldn't get them to work.
Any ideas? Not sure if this will be simple or not lol.
Thanks in advanced
05252012, 12:58 AM
#2
mmm... but doesn't 1e6 equal 0.000001?
javascript has builtin methods for converting to and from exponential numbers:
https://developer.mozilla.org/en/Jav...Objects/Number
so you can do something like this:
Code:<html> <head> </head> <body> <input type="text" value ="1e6" id="start"> <input type="button" value="convert" onclick="convert()"> <input type="text" id="end"> <script type='text/javascript'> function convert(){ document.getElementById("end").value=Number(document.getElementById("start").value).toPrecision() } </script> </body> </html>
05252012, 01:42 AM
#3
 Join Date
 May 2012
 Posts
 6
 Thanks
 4
 Thanked 0 Times in 0 Posts
My bad, in the original post I did 1e6 instead of 1e6.
I was trying the code you used in a brand new dreamweaver file, and if you change the text box to 1e7 the second text box comes out as scientific notation. Is there a limit to what it can convert? 1e7 works, 1e20 works, but it seems negatives don't.
Some of the equations are like this: 2.47105381e16 . So I'd hate to have negative numbers not work.
Edit: Just tested my project again, and it seems to automatically convert to decimal when it does the math, however, it only works till a certain amount like stated above.
Now, I'm just scratching my head on this lol.
05252012, 02:47 AM
#4
No, toPrecision() does *NOT* force scientific notation, at all. Dunno why Xelawho gave you that answer.
Actually, if you use toPrecision() [no argument] it is no different than toString(). Only if you give it an argument will it be different. But it still won't FORCE scientific notation.
You want toExponential(digits)
Example:
Code:<script type="text/javascript"> var exp = 30; while ( exp < 31 ) { var n = Number("1e" + exp); document.write( n.toExponential(8) + "<br/>" ); exp += 2; } </script>
An optimist sees the glass as half full.
A pessimist sees the glass as half empty.
A realist drinks it no matter how much there is.
05252012, 09:45 AM
#5
 Join Date
 Jun 2002
 Location
 London, England
 Posts
 18,447
 Thanks
 205
 Thanked 2,578 Times in 2,556 Posts
This is the JavaScript forum. Java and Javascript are entirely different programming languages, in spite of the confusingly similar names. Rather like Austria and Australia!I'm using java to convert a number
See: scientific notation of numbers
You convert a positive or negative scientific format number to standard decimal simply with *1. But 2.47105381e16 is too big a number for Javascript to handle.
Further examples to study:Code:<input type = "text" id = "txt1" value = 1e06> <input type = "text" id = "txt2"> <input type = button value = "Click" onclick = "makeNumber()"> <script type="text/javascript"> function makeNumber() { var x = document.getElementById("txt1").value; document.getElementById("txt2").value = x*1; } </script>
Code:<script type="text/javascript"> alert (Math.pow(10,20); alert (Math.pow(10,21)); // Javascript can display numbers up to 10 ^ 20, thereafter in scientific/exponential notation. alert (parseFloat(1.51e6)); // returns 0.00000151 alert (parseFloat(1.23e7)); // returns 1.23e7 // You can use toFixed() instead of parseFloat() to format positive numbers the way you want up to 20 places of decimals. // For example (1.23e7).toFixed(9) will render as 0.000000123 alert (2.47105381e16.toFixed(20)); // returns positive value alert ((2.47105381e16).toFixed(20)); // using parentheses returns negative value alert (2.47105381e16.toFixed(21)); // out of range // Using .toFixed() with negative numbers requires the value to be placed in parentheses as, due to operator precedence, negative numbers don't return a string. alert (1.23e2.toFixed(9)); // 0.0123 alert (1.23e4.toFixed(9)); // 0.000123 alert ((1.23e4).toFixed(9)); // 0.000123000 </script>
Last edited by Philip M; 05252012 at 12:02 PM.
All the code given in this post has been tested and is intended to address the question asked.
Unless stated otherwise it is not just a demonstration.