gpt4 book ai didi

assembly - 如何在汇编中div后显示11.1?

转载 作者:行者123 更新时间:2023-12-02 22:11:36 25 4
gpt4 key购买 nike

如何在div后显示11.1?例如32/5=6.4,我只能显示6,那么如何显示6.4?

OUT23:

MOV BL,CNT ;CNT is the total number of even number
DIV BL
MOV DL,AL
MOV BH,AL
MOV AH,09H
LEA DX,MSG23
INT 21H
MOV DL,BH ;print out the average, only the integer part able to display
MOV AH,02
ADD DL,30H
INT 21H

最佳答案

如果您想将两个整数相除并打印小数结果,那么您可以像小学中用手除法那样进行操作。初始除法将为您提供结果的整数部分,然后将余数部分重复乘以 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...

当然,可以通过乘以 10N 一次获得 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

更详细的信息可以在Turn float into string中找到

关于assembly - 如何在汇编中div后显示11.1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4978484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com