Skip to content
Related Articles
Exponential notation of a decimal number
• Difficulty Level : Medium
• Last Updated : 14 Nov, 2017

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.
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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 ``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 mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up