使用Java双精度(或其他任何东西)来存储简单的分数

ACa*_*ter 4 java math floating-point primitive-types

这似乎是一个非常简单的错误:

double quarter = 1/4;
Run Code Online (Sandbox Code Playgroud)

给予

0.0
Run Code Online (Sandbox Code Playgroud)

有人知道为什么会这样吗?

我试图存储几乎所有从1/2到1/20的分数(只是顶部为1,底部为int的那些),所以我将无法直接输入所有小数他们

我已经读过并听说浮点数据类型不是存储分数的好方法,那么还有其他方法(在Java中)吗?

Ale*_*lex 10

尝试:

double quarter = 1d/4d;
Run Code Online (Sandbox Code Playgroud)

对整数的除法给出了一个舍入整数.通过将d放在数字后面,你将它们加倍.