Exponential notation of a decimal number
Given a positive decimal number, find the simple exponential notation (x = a·10^b) of the given number. Examples:
Input : 100.0 Output : 1E2 Explanation: The exponential notation of 100.0 is 1E2. Input :19 Output :1.9E1 Explanation: The exponential notation of 16 is 1.6E1.
Approach: The simplest way is to find the position of the first non zero digit and the position of the dot. The difference between that positions is the value of b (if the value is positive you should also decrease it by one). Below is the implementation of the above approach:
C++
// C++ code to find the exponential notation #include <bits/stdc++.h> using namespace std; // function to calculate the exponential // notation void FindExponent( char s[], int n) { int i, j, b, c; for (i = 0; s[i] == '0' || s[i] == '.' ; i++) ; for (j = n - 1; s[j] == '0' || s[j] == '.' ; j--) ; c = find(s, s + n, '.' ) - s; putchar (s[i]); if (i != j) putchar ( '.' ); for ( int k = i + 1; k <= j; k++) if (s[k] != '.' ) putchar (s[k]); if (i < c) b = c - i - 1; else b = c - i; if (b) printf ("E%d", b); } // main function int main() { char s[] = "100"; int n = strlen (s); FindExponent(s, n); } |
Javascript
// JavaScript code to find the exponential notation // function to calculate the exponential // notation function FindExponent(s, n){ // Storing the result in an array const res = new Array(); let i, j, b, c; for (i = 0; s[i] == '0' || s[i] == '.' ; i++); for (j = n - 1; s[j] == '0' || s[j] == '.' ; j--); // Finding the first index in s which is equal to '.' c = s.findIndex( function (element) { return element == '.' ; }); // if '.' not found then put c = n. if (c == -1){ c = n; } res.push(s[i]); if (i != j){ res.push( '.' ); } for (let k = i + 1; k <= j; k++){ if (s[k] != '.' ){ res.push(s[k]); } } if (i < c){ b = c - i - 1; } else { b = c - i; } if (b){ res.push( "E" ); res.push(b); } console.log(res.join( '' )); } // main function { let s = "100" ; let n = s.length; FindExponent(s.split( '' ), n); } // The code is contributed by Gautam goel (gautamgoel962) |
Output:
1E2