How do I format text output to screen...
Blitz3D Forums/Blitz3D Beginners Area/How do I format text output to screen...
| ||
| In Blitz3D, When outputting text to the screen, how do I format my numbers to be a fixed number of places after the decimal? Something like: Function FormatIt$(Number#, PlacesAfterDecimal%) NewNumber$ = Str(Number#) Found% = Instr(NewNumber$, ".") If Found% > 0 Then CurrentPlaces% = Len(Str(NewNumber$)) - Found% While CurrentPlaces% < PlacesAfterDecimal% NewNumber$ = NewNumber$ + "0" Wend End If Return NewNumber$ End Function |
| ||
Nevermind...This might be a stupid way to do it but it seems to work...Function FormatIt$(Number#, PlacesAfterDecimal#) NewNumber$ = Str(Number#) For I = 1 To PlacesAfterDecimal# NewNumber$ = NewNumber$ + "0" Next Found# = Instr(NewNumber$, ".") If Found# > 0 Then CurrentPlaces# = Len(Str(NewNumber$)) - Found# While CurrentPlaces# < PlacesAfterDecimal# NewNumber$ = NewNumber$ + "0" Wend If CurrentPlaces# > PlacesAfterDecimal# Then NewNumber$ = Mid(NewNumber$, 1, Len(NewNumber$) - (CurrentPlaces# - PlacesAfterDecimal#)) End If End If Return NewNumber$ End Function |
| ||
Not sure if this is helpful or relevant, but at the least it demonstrates the use of String$() command to repeat a number of '0' in a string:
Function s_STRING_ShortFraction$(f_Fract#,m_DecimalPlaces%=2)
If (f_Fract=Int(f_Fract))
Return Str(Floor(f_Fract)+String("0",m_DecimalPlaces-1))
End If
Local s_Return$=Str(f_Fract)
Local m_Decimal=Instr(s_Return,".")
If (Not(m_Decimal))
;This should never actually occur, all Float# Must have decimal point
Return s_Return+String("0",m_DecimalPlaces)
End If
Local m_Count=Len(s_Return)
Local m_CurrentDecimalPlaces=(m_Count-(m_Decimal))
If (m_DecimalPlaces<m_CurrentDecimalPlaces)
s_Return=Left(s_Return,m_Decimal+m_DecimalPlaces)
Else
If (m_DecimalPlaces>m_CurrentDecimalPlaces)
s_Return=s_Return+String("0",m_DecimalPlaces-m_CurrentDecimalPlaces)
End If
End If
Return s_Return
End Function |
| ||
Print FormatIt(1.5,3) Print FormatIt(2.5456,3) Print FormatIt(3.0,3) Print FormatIt(4,3) Print FormatIt(512.04,3) Function FormatIt$(Number#, PlacesAfterDecimal%) NewNumber$ = Str(Number#) NewNumber=NewNumber +"0000000000" Found% = Instr(NewNumber$, ".") NewNumber=Left(NewNumber, Found + PlacesAfterDecimal) Return NewNumber$ End Function |