2013-11-04 30 views
1

我需要用C#程序具有将任何数量(无论是整数或长的十进制)以任何基地(合理的)帮助数字转换。需要帮助的小数到其他基地C#

该方案有几个文本框(这是一个双赢的形式)都开始空白。当用户将数字(可能是一个小数)添加到所有更新的其中一个框中。默认的框是基地2,8,10,16,最后箱子有一个子框输入您所选择的碱(如果用户想例如转换多个基站16到基座7

我不知道除Convert以外的任何其他作品可以进行基础转换

如果您不知道如何做到这一点,至少说明如何手动做到这一点会很棒!什么是64.96(base十个)八进制?

这是一个个人项目,我设置的挑战,然后出发去完成一个程序...

预先感谢任何^ h ELP!

编辑: 我将如何在C#这样做吗? int BaseX是我需要的基础。 int preBaseX是我来自的基础。 decimal outputNumber是我正在搜索的数字。 十进制inputNumber是我们开始的地方。 (也可以是650.3112或其他)

+2

您是否尝试过使用Googleing进行此转换的现有类?我发现这与快速搜索:http://stackoverflow.com/questions/923771/quickest-way-to-convert-a-base-10-number-to-any-base-in-net此外:http: //www.codeproject.com/Articles/16872/Number-base-conversion-class-in-C – Killingsworth

回答

2

要转换到64.96八进制,首先决定你要多少过去的“八进制点”的地方展示。比方说,你想3.然后,由8^3或512

64.96×512 = 33259.52

丢弃乘以你数的小数部分。顺便说一句,你的代表将会有多远。你的回答将是0.52/512 = 0.001015625太小。现在

,为转换。 8反复将您的号码(33259),跟踪余数:

33259/8 = 4157 remainder 3 
4157/8 = 519 remainder 5 
519 /8 = 64 remainder 7 
64 /8 = 8 remainder 0 
8 /8 = 1 remainder 0 
1 /8 = 0 remainder 1 

现在,把你的剩余物以相反的顺序,并从末尾插入了“八进制点” 3:

100.753

+0

这真的很有帮助!快速的问题,“八点”是从前面三个还是后面三个? (你显示100.753,你从前面还是后面计数?) – Masoniik

+0

3从后面。我说我现在意识到的“结局”是模棱两可的,但我的意思是“结束”,如开始/结束。 – vacawama

+0

当然,这也适用于其他基地。对于基数16,余数10到15将分别用十六进制数字“A”到“F”表示。 – vacawama