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 |