Tutorialspoint.dev

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


This article is attributed to GeeksforGeeks.org

leave a comment

code

0 Comments

load comments

Subscribe to Our Newsletter