Types 如何处理不可除数

Types 如何处理不可除数,types,division,Types,Division,我找不到任何处理此问题的问题或库。我想这是因为我没有太多地参与数学编程 所以基本上这就是我的问题。假设我有三个用户,我系统中的每个用户都有一个变量和他的余额: var balance_1 = 1; var balance_2 = 1; var balance_3 = 1; 比方说,我希望我的系统灵活,允许用户将部分余额发送给其他用户。例如,用户1将其余额的1/3发送给用户2。用户3将其余额的2/3发送给用户2 balance_1 = 1 - 1/3 balance_2 = 1 + 1/3

我找不到任何处理此问题的问题或库。我想这是因为我没有太多地参与数学编程

所以基本上这就是我的问题。假设我有三个用户,我系统中的每个用户都有一个变量和他的余额:

var balance_1 = 1;

var balance_2 = 1;

var balance_3 = 1;
比方说,我希望我的系统灵活,允许用户将部分余额发送给其他用户。例如,用户1将其余额的1/3发送给用户2。用户3将其余额的2/3发送给用户2

balance_1 = 1 - 1/3

balance_2 = 1 + 1/3 + 2/3 = 2

balance_3 = 1 - 2/3
那么问题出在哪里呢?问题是,如果我使用浮点数(或任何类似精度的整数),我总是会得到balance_3=1.999~然而,这不是现实(或我正在寻找的结果)。我希望余额3等于2

所以基本上我在寻找一种类型,它允许我在它们的全值上存储诸如“1/3”之类的值,而不是它们的近似值

关于我应该去哪里看有什么建议吗


附言:没有特定的语言。我想看看开发人员通常是如何处理这种情况的。

Scheme有一个
rational
类型来表示有理数,所以你可能想看看它是如何实现的。

你可以存储1/5,因为它的精度是有限的,但是数字1/3不能存储,因为0.33333中0后面的“3”。。。当内存大小有限时,它将永远存在。@BiteBytes:您可以将它非常紧凑地表示为一对(1,3)。一个技巧是使用一个包含两个字段的结构,即分母和命名器,并编写适当的接口来处理它。@ScottHunter确实,这就是我要说的。这个问题的等价物已经被问过了(并回答)这里有几十次了。搜索浮点运算被破坏了。