Open In App

Exponential notation of a decimal number

Last Updated : 28 Jul, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

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


Java




// Java code to find the exponential notation
import java.util.*;
 
class GFG {
 
  // function to calculate the exponential
  // notation
  static void FindExponent(String s, int n)
  {
 
    // Storing the result in an array
 
    int i, j, b, c;
    for (i = 0; s.charAt(i) == '0' || s.charAt(i) == '.'; i++)
      ;
    for (j = n - 1; s.charAt(j) == '0' || s.charAt(j) == '.'; j--)
      ;
 
    // Finding the first index in s which is equal to
    // '.'
    c = s.indexOf('.');
 
    // if '.' not found then put c = n.
    if (c == -1) {
      c = n;
    }
 
    System.out.print(s.charAt(i));
 
    if (i != j) {
      System.out.print('.');
    }
 
    for (int k = i + 1; k <= j; k++) {
      if (s.charAt(k) != '.') {
        System.out.print(s.charAt(k));
      }
    }
 
    if (i < c) {
      b = c - i - 1;
    }
    else {
      b = c - i;
    }
 
    if (b > 0) {
      System.out.print("E");
      System.out.print(b);
    }
  }
 
  // main function
  public static void main(String[] args)
  {
    String s = "100";
    int n = s.length();
    FindExponent(s, n);
  }
}
 
// The code is contributed by phasing17


Python3




# Python3 code to find the exponential notation
  
# function to calculate the exponential
# notation
def FindExponent(s, n):
    # Storing the result in an array
    res = []
    i = 0
    while (s[i] in '.0'):
        i += 1
     
    j = n - 1
    while (s[j] in '.0' ):
        j -= 1
         
    # Finding the first index in s which is equal to '.'
    if '.' in s:
        c = s.index('.')
    # if '.' not found then put c = n.
    else:
        c = n
 
    res.append(s[i]);
      
    if (i != j):
        res.append('.');
          
    for k in range(i + 1, 1 + j):
        if (s[k] != '.'):
            res.append(s[k]);
  
    if (i < c):
        b = c - i - 1;
     
    else:
        b = c - i;
     
      
    if (b != 0):
        res.append("E");
        res.append(str(b));
     
    print("".join(res))
 
# main function
s = "100";
n = len(s)
FindExponent(list(s), n);
 
# The code is contributed by phasing17


C#




// C# code to find the exponential notation
using System;
using System.Collections.Generic;
 
class GFG
{
 
  // function to calculate the exponential
  // notation
  static void FindExponent(string s, int n)
  {
 
    // Storing the result in an array
 
    int 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.IndexOf('.');
 
    // if '.' not found then put c = n.
    if(c == -1){
      c = n;
    }
 
    Console.Write(s[i]);
 
    if (i != j){
      Console.Write('.');
    }
 
    for (int k = i + 1; k <= j; k++){
      if (s[k] != '.'){
        Console.Write(s[k]);
      }
    }
 
    if (i < c){
      b = c - i - 1;
    }    
    else{
      b = c - i;
    }
 
    if (b > 0){
      Console.Write("E");
      Console.Write(b);
    }
  }
 
  // main function
  public static void Main(string[] args)
  {
    string s = "100";
    int n = s.Length;
    FindExponent(s, n);
  }
}
 
// The code is contributed by phasing17


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


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads