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++ 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); ` `} ` |

Output:

1E2

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.