需要帮助将带小数的数字转换为其他基数C#

时间:2013-11-04 03:12:03

标签: c# math decimal octal base-conversion

我需要帮助C#中的程序,它必须将任何数字(无论是整数还是长十进制)转换为任何基数(在合理范围内)。

该程序有几个文本框(它是一个胜利形式)都是空白的。当用户将数字(可能带有小数)添加到其中一个框时,所有更新。默认框是基础2,8,10,16,最后一个框有一个子框,用于输入您选择的基数(如果用户想要将数字基数16转换为基数为7。

除了具有基本转换功能的转换之外,我不知道任何其他作品。

如果您不知道如何做到这一点,至少解释一下如何手动执行此操作将非常棒!什么是八进制的64.96(十进制)?

这是一个个人项目。我设置挑战然后开始完成一个程序...

提前感谢您的帮助!!

编辑: 我怎么用C#做这个? int BaseX是我需要达到的基础。 int preBaseX是我来自的基地。 decimal outputNumber是我正在搜索的数字。 decimal inputNumber是我们开始的地方。 (可以是650.3112或其他)

1 个答案:

答案 0 :(得分:2)

要将64.96转换为八进制,首先要确定要显示的“八进制点”之后多少个位置。假设您想要3.然后将您的数字乘以8 ^ 3或512。

64.96 * 512 = 33259.52

丢弃小数部分。顺便说一下,你的代表性将达到64.96。你的答案是0.52 / 512 = 0.001015625太小。

现在,进行转换。反复将您的号码(33259)除以8,跟踪余数:

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