首页 > 解决方案 > 如何使用 Irvine32 并以有限的精度以十进制而不是科学计数法显示浮点数?

问题描述

我正在创建一个计算二次方程根的汇编程序。我能够找到一个根目录,但格式已关闭。

在此处输入图像描述

这是代码:

INCLUDE Irvine32.inc    
INCLUDE macros.inc

.data                                                   


msg1 byte "Result: ", 0
msg2 byte "With precision: ", 0
msg3 byte "a", 0

a real8 ?
b real8 ?
cc real8 ?

two real8 2.0
four real8 4.0
ten dword 10

.code                                   
main PROC       
  
    finit 
    mWrite "Enter coefficient (a): "
    call ReadFloat
    fstp a

    mWrite "Enter coefficient (b): "
    call ReadFloat
    fstp b

    mWrite "Enter coefficient (c): "
    call ReadFloat
    fstp cc

    fld b
    fmul b
    fchs
    fst b
    
    call Crlf

    fld four
    fmul a
    fmul cc
    fchs
    fsub b
    fsqrt
    fst four
    ;call WriteFloat

    call Crlf

    fld b
    fchs
    fsqrt
    fchs
    fadd four
    fst b

    fld two
    fmul a
    fst two

    fld b
    fdiv two
    
    mWrite "Root: "
    call WriteFloat

    ;call showfpustack
exit
main ENDP
end main

我得到的结果是正确的。但是,我想将其显示为 -0.35425(5 个浮点精度)。如何格式化输出?我尝试将该值除以 10,这在理论上应该有效。我将不胜感激任何帮助!

标签: assemblyfloating-pointmasmirvine32floating-point-conversion

解决方案


推荐阅读