witam, robie program ktory liczy bmi, i niestety podczas dzielenia zaokragla mi liczbę do 0
wzor na bmi (waga/ (wzrost*wzrosst))*10000, wzrost w cm
problem jest juz podczas dzielenia wagi przez wzrost kwadrat, wychodzi wtedy liczba poniżej 1 i mi zaokragla do 0. jak zrobic, aby zaokraglilo np do 2 miejsc po przecinku?
z pola EditID to waga
z pola Edit1ID to wzrost
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
szText MACRO Name, Text:VARARG
LOCAL lbl
jmp lbl
Name db Text,0
lbl:
ENDM
.data
Klasa db "klasa",0
Tytul db "Program Pudziana",0
classButton db "BUTTON",0
Button2Text db "Wynik",0
Button3Text db "Wpisz",0
Button4Text db "Wyjdź",0
classEdit db "EDIT",0
TekstPrzykladowy db "Pudzian",0
szDecFrmt DB "%0d", 0
szBuf DB 512 dup (0)
.data?
hInstance HINSTANCE ?
hEdit dd ?
wynik real4 ?
hButton2 dd ?
hButton3 dd ?
hButton4 dd ?
wzrost real4 ?
waga real4 ?
.const
EditID equ 2
Edit1ID equ 6
Button2ID equ 3
Button3ID equ 4
Button4ID equ 5
.code
start:
............
invoke GetDlgItemInt, hWnd, EditID, NULL, FALSE
push eax
invoke GetDlgItemInt, hWnd, Edit1ID, NULL, FALSE
mov ebx, eax
pop eax
mov waga,eax
mov wzrost,ebx
mov eax, wzrost
mul ebx
mov wynik,eax
mov eax, waga
mov ebx, wynik
div ebx
mov wynik,eax
INVOKE wsprintf, ADDR szBuf, ADDR szDecFrmt, wynik
invoke MessageBox,hWnd,addr szBuf,addr Tytul,MB_OK or MB_ICONEXCLAMATION
...........
end start
prosze o pomoc i pozdrawiam