如果您想将两个整数相除并打印小数结果,那么您可以像在小学手动除法一样进行操作。初始除法将为您提供结果的整数部分,然后将余数部分重复乘以 10 并除以除数,直到它为零或您已达到预期的精度以获得分数
以32/5
上面的例子为例
整数部分:
32/5 = 6 → Print out "6."
小数部分:
Remainder: 2, multiply it by 10 → 2*10 = 20
20/5 = 4 → Print out "4"
Remainder: 0, stop here
更复杂的除法也可以像上面那样完成,只需在每一步之后将余数乘以 10。如果结果是无限的,那么当你获得足够的精度时停止。例如:25/11 = 2.27272727...
25/11 = 2 R 3 → 2.
3*10/11 = 2 R 8 → 2
8*10/11 = 7 R 3 → 7
3*10/11 = 2 R 8 → 2
8*10/11 = 7 R 3 → 7
and so on...
当然,通过乘以 10 N一次得到 N 个小数位数,它可以做得更快
或者使用浮点值并FDIV
像其他人所说的那样进行浮点除法。之后有多种方法可以将浮点结果转换为字符串,但要获得正确舍入的结果将非常困难,因此最好只使用为此目的制作的库。
然而,对于一个非常简单的演示,同样可以使用上述方法:
- 拆分结果的整数部分并打印它,然后
.
- 将整数部分乘以 10,整数部分将是下一个小数位
- 删除整数部分并重复上述步骤,直到达到所需的精度
一个粗略的例子是这样的,忽略由于二进制浮点属性引起的错误
11.157
Int part: 11 → print 11.
Fractional part:
0.157*10 = 1.57 → print 1
0.57*10 = 5.7 → print 5
0.7*10 = 7 → print 7
更详细的信息可以在将浮点数转为字符串中找到