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 |