BIG floot

Algemene discussies en vragen omtrent Liberty BASIC programma's. Stuur zoveel mogelijk delen van listings (snippets) in als je hulp wilt.

Moderators: anthonio, Abcott

BIG floot

Berichtdoor bluatigro » vr mei 17, 2013 1:26 pm

dit is n poging om met veel cyfers achter de komma te rekenen

er zit[ten] nog wat error['s] in bigmutiply() en|of in maal()

en dan heb ik ook nog geen planning voor bigsubtract() en bigdivide()
Code: Selecteer alles
a$ = "20.2"
print "                a = " ; a$
a$ = big$( a$ )
print "            big a = " ; a$
b$ = "300.0003"
print "                b = " ; b$
b$ = big$( b$ )
print "            big b = " ; b$
c$ = bigadd$( a$ , b$ )
print "big big a + big b = " ; c$
print "      floot a + b = " ; floot$( c$ )
d$ = bigadd$( b$ , a$ )
print "big big b + big a = " ; d$
print "      floot b + a = " ; floot$( d$ )
e$ = bigmultiply$( a$ , b$ )
print "big big a * big b = " ; e$
print "      floot a * b = " ; floot$( e$ )
e$ = bigmultiply$( b$ , a$ )
print "big big b * big a = " ; e$
print "      floot b * a = " ; floot$( e$ )

print

print "ready"

end
function floot$( b$ )
  n$ = number$( b$ )
  p = point( b$ )
  l$ = left$( n$ , p - 1 )
  r$ = right$( n$ , len( n$ ) - p + 1 )
  floot$ = l$ ; "." ; r$
end function
function big$( a$ )
  n$ = word$( a$ , 1 , "." )
  f$ = word$( a$ , 2 , "." )
  big$ = n$ + f$ + " " ; len( a$ ) - instr( a$ , "." )
end function
function bigadd$( a$ , b$ )
  an$ = number$( a$ )
  ap = point( a$ )
  bn$ = number$( b$ )
  bp = point( b$ )

  ''pad the number whit 0 for same len string
  if ap > bp then
    hn$ = an$
    an$ = bn$
    bn$ = hn$
    hp = ap
    ap = bp
    bp = hp
  end if
  if ap < bp then
    p = bp - ap
    an$ = an$ + string$( "0" , p )
  end if
  if len( an$ ) < len( bn$ ) then
    an$ = string$( "0" , len( bn$ ) - len( an$ ) ) + an$
  end if
  if len( an$ ) > len( bn$ ) then
    bn$ = string$( "0" , len( an$ ) - len( bn$ ) ) + bn$
  end if

  ''add the floot$
  carry = 0
  uitn$ = ""
  for i = len( an$ ) to 1 step -1
    a = val( mid$( an$ , i , 1 ) )
    b = val( mid$( bn$ , i , 1 ) )
    c = a + b + carry
    carry = int( c / 10 )
    uitn$ = str$( c - carry * 10 ) + uitn$
  next i
  bigadd$ = uitn$ + " " ; ap + p
end function
function bigmultiply$( a$ , b$ )
  an$ = number$( a$ )
  ap = point( a$ )
  bn$ = number$( b$ )
  bp = point( b$ )

  uit$ = "0 0"
  for i = len( an$ ) to 1 step -1
    q = val( mid$( an$ , i , 1 ) )
    h$ = maal$( bn$ , q ) + string$( "0" , i )
    uit$ = bigadd$( uit$ , h$ + " " ; ap + i )
  next i
  bigmultiply$ = uit$
end function
function maal$( a$ , no )
  carry = 0
  uit$ = ""
  for i = len( an$ ) to 1 step -1
    a = val( mid$( an$ , i , 1 ) )
    c = a * no + carry
    carry = int( c / 10 )
    uit$ = str$( c - carry * 10 ) + uit$
  next i
  maal$ = uit$
end function
function string$( q$ , no )
  uit$ = q$
  for i = 2 to no
    uit$ = uit$ + q$
  next i
  string$ = uit$
end function
function number$( a$ )
  number$ = word$( a$ , 1 )
end function
function point( a$ )
  point = val( word$( a$ , 2 ) )
end function
bluatigro
 
Berichten: 306
Geregistreerd: za sep 27, 2008 6:01 pm

Keer terug naar Liberty BASIC Code

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast

cron