Register to reply 
Base conversion in C 
Share this thread: 
#1
Dec2712, 05:54 PM

P: 44

I have been working on coding a program that works for all bases, including nonintegers. I have been checking it against wolframalpha, and so far, my code works for a decent amount of bases, but at the same time has trouble with others... For instance it seems to have a tolerance in the magnitude and the digit length of the bases. So, far I have tested and it seems to work for bases larger than 1.5 (I have tested it up to 64 so far) and up to 6 digit bases(6 including the digits after the decimal) with some exceptions. I have noticed that for the decimal bases that my program computes that don't match wolfram, the string will match until a certain digits place, say k, and at k, k1 wolfram will have a 10 respectively, while my computed value will have the floor of the base in the k1 place. I figured that it may be that my algorithm wasn't finding the highest power divisor right, but then I realized that would not make since. So, I was hoping that fresh eyes may be able to help me out with it... By the way, this is just a rough draft, but the procedure should be fairly simple to follow.



#2
Dec2812, 09:25 AM

P: 194

Can you give a couple of examples of where your code differs from WolframAlpha? 


#3
Dec2812, 05:20 PM

P: 44

Sorry about that, I was trying to format the code in the physics forum box and add comments and I guess I messed that loop up. But here are some examples:
10 in base 3.14159: My code: [tex](x)_{b} = (10.000000)_{3.14159} = 30.121201...[/tex] Wolfram: [tex]100.01022123001..._{3.14159} [/tex] 1230293 in base 3.10293 My code: [tex](x)_{b} = (1230293.000000)_{3.10293} = 1120103012012.122122...[/tex] Wolfram: [tex]1.1201100020201..._{3.10293}×3.10293^{12}[/tex] The last one really shows what I was talking about the digits are the same until the 3 in mine which you notice is the floor of the base while theirs is a 1 in the preceding digits place and 0 where I have a 3, I pointed the floor of the base thing out because all we are really doing is modular arithmetic. And I am guessing it has something to do with that. You will notice that after that mine differs from theirs completely. In the first one this happens at the first digit, so the entire string is different. 


#4
Dec2812, 05:21 PM

P: 44

Base conversion in C
I was thinking that it may actually be machine error.



#5
Dec2812, 05:34 PM

P: 44

I figured that I would post a few where they are the same also:
3623847 in base 39: My code: [tex](x)_{b} = (3623847.000000)_{39} = 1223216.000...[/tex] Wolfram: [tex]1223216_{39}[/tex] 10 in base 4.16273 My code: [tex](x)_{b} = (10.000000)_{4.16273} = 21.231202...[/tex] Wolfram: [tex]21.2312021013..._{4.16273}[/tex] 10 in base 2.718281828: My code: [tex](x)_{b} = (10.000000)_{2.718282} = 102.1120101...[/tex] Wolfram: [tex]102.1120101111..._{2.71828}[/tex] 


#6
Dec2812, 05:37 PM

HW Helper
P: 6,187

The difference is that Wolfram tries to get the highest possible digits in the highest possible places and apparently your algorithm does not. Note that if the base is a whole number, the representation is unique. But if the base is a fractional number, there is more than 1 representation. You can verify this by multiplying out the numbers. 


#7
Dec2812, 05:47 PM

P: 44

Oh thank you! I did not know that. Is there somewhere that I can read more about this?



#8
Dec2812, 06:01 PM

HW Helper
P: 6,187

Sorry, I don't really know.
I've learned about it in old books that you won't have available. So what's left is googling for it. 


#9
Dec2812, 06:19 PM

P: 44

I'll do that when I have some free time. Thanks for the information though. It's always a good feeling when you get a program right the first time through :)



Register to reply 
Related Discussions  
What happens if emitterbase & basecollector junctions are forward biased with 0.7V?  Electrical Engineering  10  
Why the method works? Change a decimal no. from denary(base 10) to octal(base 8)  General Math  1  
Base conversion  the LOGIC and INTUITION behind it...  Electrical Engineering  2  
Base N to Base N Conversion  Linear & Abstract Algebra  1  
AcidBase neutralization w/ more than 1 base.  Chemistry  6 