Custom float-printing function.

This commit is contained in:
Bartosz Taudul 2020-01-31 01:19:08 +01:00
parent 8d5f4d7363
commit 36fb1f96e2
2 changed files with 13 additions and 6 deletions

View File

@ -280,29 +280,28 @@ const char* MemSizeToString( int64_t val )
}; };
Unit unit; Unit unit;
char* ptr;
if( aval < 10000ll * 1024 ) if( aval < 10000ll * 1024 )
{ {
sprintf( buf, "%.2f", val / 1024. ); ptr = PrintFloat( buf, buf+64, val / 1024., 2 );
unit = Unit::Kilobyte; unit = Unit::Kilobyte;
} }
else if( aval < 10000ll * 1024 * 1024 ) else if( aval < 10000ll * 1024 * 1024 )
{ {
sprintf( buf, "%.2f", val / ( 1024. * 1024 ) ); ptr = PrintFloat( buf, buf+64, val / ( 1024. * 1024 ), 2 );
unit = Unit::Megabyte; unit = Unit::Megabyte;
} }
else if( aval < 10000ll * 1024 * 1024 * 1024 ) else if( aval < 10000ll * 1024 * 1024 * 1024 )
{ {
sprintf( buf, "%.2f", val / ( 1024. * 1024 * 1024 ) ); ptr = PrintFloat( buf, buf+64, val / ( 1024. * 1024 * 1024 ), 2 );
unit = Unit::Gigabyte; unit = Unit::Gigabyte;
} }
else else
{ {
sprintf( buf, "%.2f", val / ( 1024. * 1024 * 1024 * 1024 ) ); ptr = PrintFloat( buf, buf+64, val / ( 1024. * 1024 * 1024 * 1024 ), 2 );
unit = Unit::Terabyte; unit = Unit::Terabyte;
} }
auto ptr = buf;
while( *ptr ) ptr++;
ptr--; ptr--;
while( ptr >= buf && *ptr == '0' ) ptr--; while( ptr >= buf && *ptr == '0' ) ptr--;
if( *ptr != '.' ) ptr++; if( *ptr != '.' ) ptr++;

View File

@ -1,9 +1,17 @@
#ifndef __TRACYPRINT_HPP__ #ifndef __TRACYPRINT_HPP__
#define __TRACYPRINT_HPP__ #define __TRACYPRINT_HPP__
#include <stdio.h>
namespace tracy namespace tracy
{ {
template<typename T>
static inline char* PrintFloat( char* begin, char* end, T value, int precision )
{
return begin + sprintf( begin, "%.*f", precision, value );
}
const char* TimeToString( int64_t ns ); const char* TimeToString( int64_t ns );
const char* RealToString( double val, bool separator ); const char* RealToString( double val, bool separator );
const char* MemSizeToString( int64_t val ); const char* MemSizeToString( int64_t val );