Skip to content
Related Articles

Related Articles

Improve Article
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.


Input : 100.0
Output : 1E2
The exponential notation of 100.0 is 1E2.

Input :19
Output :1.9E1
The exponential notation of 16 is 1.6E1.

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;
    if (i != j)
    for (int k = i + 1; k <= j; k++)
        if (s[k] != '.')
    if (i < c)
        b = c - i - 1;
        b = c - i;
    if (b)
        printf("E%d", b);
// main function
int main()
    char s[] = "100";
    int n = strlen(s);
    FindExponent(s, n);



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
Recommended Articles
Page :