Home › C and C++ › Visual C++

For example:

double a = 123.45;

int E;

...

E = ???(a); //in that case exponent (E) will be -2 (12345*10-2)(I hope so...)

and also somehow get effective numbers to other variable (long N = ???(a)) //here it wil be 12345 (or maybe use some other type, or storage process if type long isn't big enaugh)

And the most important - it needs to be very, VERY fast. I want to use it in a special sorting algorythm, it work quite well for integer values (it sorts much more faster than quick sort),but for real numbers it needs a little different architecture. So, please help me someone.

It looks like you're new here. If you want to get involved, click one of these buttons!

- 140.8K All Categories
- 103.6K Programming Languages
- 6.4K Assembler Developer
- 401 Assembly Code Share
- 239 Getting started in assembly
- 4.6K x86 Assembly
- 1.9K Basic
- 97 Qbasic
- 39.9K C and C++
- 5.6K Beginner C/C++
- 330 C/C++ on Linux/Unix
- 450 C/C++ Windows API
- 522 C++ Builder
- 253 C++ Game Development
- 3.3K C++ MFC
- 103 C++.NET
- 404 Visual C++
- 2.9K C#
- 7.9K Delphi and Kylix
- 334 Advanced Delphi
- 360 Delphi beginners
- 4 Haskell
- 9.7K Java
- 56 Enterprise JavaBeans
- 1.3K Java Beginners
- 304 Java Server Pages
- 4.1K Pascal
- 1.3K Perl
- 11 Perl 6
- 2K PHP
- 546 Python
- 37 Ruby
- 4.4K VB.NET
- 258 Advanced VB.Net
- 1.6K VBA
- 20.8K Visual Basic
- 767 Access databases and VB
- 831 Advance Visual Basic
- 1.2K Beginner VB
- 2.6K Game programming
- 315 Console programming
- 90 DirectX Game dev
- 1 Minecraft
- 112 Newbie Game Programmers
- 2 Oculus Rift
- 9K Applications
- 1.8K Computer Graphics
- 279 3D Graphics
- 129 DirectX
- 125 OpenGL
- 740 Computer Hardware
- 9 Cooling & Overclocking
- 3.4K Database & SQL
- 1.1K Access
- 91 ADO Programming
- 288 MySQL
- 358 Oracle
- 440 SQL-Server
- 535 Electronics development
- 1.6K Matlab
- 628 Sound & Music
- 25 DirectSound
- 257 XML Development
- 3.3K Classifieds
- 199 Co-operative Projects
- 198 For sale
- 190 FreeLance Software City
- 1.9K Jobs Available
- 603 Jobs Wanted
- 209 Wanted
- 2.9K Microsoft .NET
- 1.8K ASP.NET
- 1.1K .NET General
- 22 .NET WEB-Services
- 129 .NET WinForms
- 14 .NET XML
- 50 ADO.NET
- 142 C# & VB.NET School Support
- 3.4K Miscellaneous
- 4 Join the Team
- 354 Comments on this site
- 69 Computer Emulators
- 2.1K General programming
- 187 New programming languages
- 621 Off topic board
- 200 Mobile & Wireless
- 72 Android
- 126 Palm Pilot
- 338 Multimedia
- 154 Demo programming
- 184 MP3 programming
- 0 Bash scripts
- 27 Cloud Computing
- 1 Witsbits Go Cloud
- 53 FreeBSD
- 1.7K LINUX programming
- 1 Awk scripting
- 332 Linux Support
- 0 Sed scripting
- 370 MS-DOS
- 0 Shell scripting
- 321 Windows CE & Pocket PC
- 4.1K Windows programming
- 177 COM/DCOM
- 61 Networking And Security
- 17 Windows 2003 Server
- 6 Windows Vista
- 176 Windows XP
- 939 Software Development
- 416 Algorithms
- 68 Object Orientation
- 24 RUP & UML
- 91 Project Management
- 95 Quality & Testing
- 268 Security
- 63 Evil Scripting
- 81 Hacking
- 7.7K WEB-Development
- 1.8K Active Server Pages
- 61 AJAX
- 4 Bootstrap Themes
- 55 CGI Development
- 28 ColdFusion
- 224 Flash development
- 1.4K HTML & WEB-Design
- 1.4K Internet Development
- 131 Mobile Internet & Messaging
- 211 Wireless development
- 2.2K JavaScript
- 37 JQuery
- 304 WEB Servers
- 153 Apache
- 79 IIS
- 150 WEB-Services / SOAP

## Comments

: from this variable to another variable.

:

: For example:

:

: double a = 123.45;

: int E;

: ...

: E = ???(a); //in that case exponent (E) will be -2 (12345*10-2)(I

: hope so...)

:

: and also somehow get effective numbers to other variable (long N =

: ???(a)) //here it wil be 12345 (or maybe use some other type, or

: storage process if type long isn't big enaugh)

:

: And the most important - it needs to be very, VERY fast. I want to

: use it in a special sorting algorythm, it work quite well for

: integer values (it sorts much more faster than quick sort),but for

: real numbers it needs a little different architecture. So, please

: help me someone.

:

E=(int)(floor(log10(E)));

Not sure if it is what you're looking for or if it is fast enough to meet your standards, though.

The above gives the exponent for scientific notation. I believe it is impossible to quickly determine the exponent you are looking for, as floating points are stored in binary format, leading to an infinite repeating pattern of bits for most decimals.

: Not sure if it is what you're looking for or if it is fast enough to

: meet your standards, though.

: The above gives the exponent for scientific notation. I believe it

: is impossible to quickly determine the exponent you are looking for,

: as floating points are stored in binary format, leading to an

: infinite repeating pattern of bits for most decimals.

Thanks, but I need something little different. That code gives me something like a count of number in variable minus 1 (for example: for 963 it gives 2, for 9638 gives 3...; and for 0.555 it gives -1 (for all 0.xxxxx it returns -1)

But I need to get (probably from the binary form, because complicated calculations will be too slow) the shift of effective numbers against the 0.

examples:

123456789 E = 0 (123456789 * 10 ^0) //9 effective numbers

123000000 E = 6 (123 * 10 ^6) //3 effective numbers

0.000123 E = -6 (123 * 10 ^-6) //also 3 effective numbers

I think it can be done fast, as I know data is stored in two variables - fist contains effective numbers, and other exponent, right? So extract one of them should be possible (maybe in assembler, why not?). I can get exponent by calculation, but it wil be slow, and for my purposes totally uselles.

: : Not sure if it is what you're looking for or if it is fast enough to

: : meet your standards, though.

: : The above gives the exponent for scientific notation. I believe it

: : is impossible to quickly determine the exponent you are looking for,

: : as floating points are stored in binary format, leading to an

: : infinite repeating pattern of bits for most decimals.

:

: Thanks, but I need something little different. That code gives me

: something like a count of number in variable minus 1 (for example:

: for 963 it gives 2, for 9638 gives 3...; and for 0.555 it gives -1

: (for all 0.xxxxx it returns -1)

: But I need to get (probably from the binary form, because

: complicated calculations will be too slow) the shift of effective

: numbers against the 0.

: examples:

: 123456789 E = 0 (123456789 * 10 ^0) //9 effective numbers

: 123000000 E = 6 (123 * 10 ^6) //3 effective numbers

: 0.000123 E = -6 (123 * 10 ^-6) //also 3 effective numbers

:

:

: I think it can be done fast, as I know data is stored in two

: variables - fist contains effective numbers, and other exponent,

: right? So extract one of them should be possible (maybe in

: assembler, why not?). I can get exponent by calculation, but it wil

: be slow, and for my purposes totally uselles.

:

A floating point is seperated into two variables, the mantissa and exponent, as you have described, but they are not decimals with a decimal exponent, but they are a string of binary digits with a binary exponent.