Go Back   CodingForums.com > :: Client side development > JavaScript programming

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 05-24-2012, 11:40 PM   PM User | #1
Aboxofdonuts
New to the CF scene

 
Join Date: May 2012
Posts: 6
Thanks: 4
Thanked 0 Times in 0 Posts
Aboxofdonuts is an unknown quantity at this point
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*1e-6
first result text box would read
1e-6
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
Aboxofdonuts is offline   Reply With Quote
Old 05-24-2012, 11:58 PM   PM User | #2
xelawho
Senior Coder

 
xelawho's Avatar
 
Join Date: Nov 2010
Posts: 2,461
Thanks: 52
Thanked 457 Times in 455 Posts
xelawho will become famous soon enoughxelawho will become famous soon enough
mmm... but doesn't 1e-6 equal 0.000001?

javascript has built-in 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 ="1e-6" 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>
xelawho is offline   Reply With Quote
Old 05-25-2012, 12:42 AM   PM User | #3
Aboxofdonuts
New to the CF scene

 
Join Date: May 2012
Posts: 6
Thanks: 4
Thanked 0 Times in 0 Posts
Aboxofdonuts is an unknown quantity at this point
Quote:
Originally Posted by xelawho View Post
mmm... but doesn't 1e-6 equal 0.000001?
My bad, in the original post I did 1e6 instead of 1e-6.

I was trying the code you used in a brand new dreamweaver file, and if you change the text box to 1e-7 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.47105381e-16 . 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.
Aboxofdonuts is offline   Reply With Quote
Old 05-25-2012, 01:47 AM   PM User | #4
Old Pedant
Supreme Master coder!

 
Old Pedant's Avatar
 
Join Date: Feb 2009
Posts: 23,556
Thanks: 62
Thanked 4,055 Times in 4,024 Posts
Old Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to all
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.
Old Pedant is offline   Reply With Quote
Old 05-25-2012, 08:45 AM   PM User | #5
Philip M
Supreme Master coder!

 
Philip M's Avatar
 
Join Date: Jun 2002
Location: London, England
Posts: 17,102
Thanks: 197
Thanked 2,421 Times in 2,399 Posts
Philip M has a spectacular aura aboutPhilip M has a spectacular aura aboutPhilip M has a spectacular aura about
Quote:
I'm using java to convert a number
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!

See: http://www.codingforums.com/showthread.php?t=138859

You convert a positive or negative scientific format number to standard decimal simply with *1. But 2.47105381e-16 is too big a number for Javascript to handle.

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>
Further examples to study:-
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.51e-6)); // returns 0.00000151 
alert (parseFloat(1.23e-7)); // returns 1.23e-7 

// You can use toFixed() instead of parseFloat() to format positive numbers the way you want up to 20 places of decimals. 
// For example (1.23e-7).toFixed(9) will render as 0.000000123

alert (2.47105381e-16.toFixed(20));  // returns positive value
alert ((-2.47105381e-16).toFixed(20));  // using parentheses returns negative value
alert (2.47105381e-16.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.23e-2.toFixed(9));  // -0.0123
alert (-1.23e-4.toFixed(9)); // -0.000123
alert ((-1.23e-4).toFixed(9)); // -0.000123000


</script>
__________________

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.

Last edited by Philip M; 05-25-2012 at 11:02 AM..
Philip M is offline   Reply With Quote
Reply

Bookmarks

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 12:26 PM.


Advertisement
Log in to turn off these ads.