printInt(): fix sign issue when outputting 0, use postfix in/decrement
This commit is contained in:
parent
60663b5433
commit
f553896e2d
@ -42,31 +42,33 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
template <int length, int precision> static inline char *printInt(char *buffer, int value)
|
template <int length, int precision> static inline char *printInt(char *buffer, int value)
|
||||||
{
|
{
|
||||||
bool minus = true;
|
bool minus = true;
|
||||||
if (value > 0)
|
if (value >= 0)
|
||||||
{
|
{
|
||||||
minus = false;
|
minus = false;
|
||||||
value = -value;
|
value = -value;
|
||||||
}
|
}
|
||||||
buffer += length - 1;
|
buffer += length - 1;
|
||||||
for (int i = 0; i < precision; i++)
|
for (int i = 0; i < precision; ++i)
|
||||||
{
|
{
|
||||||
*buffer = '0' - (value % 10);
|
*buffer = '0' - (value % 10);
|
||||||
value /= 10;
|
value /= 10;
|
||||||
buffer--;
|
--buffer;
|
||||||
}
|
}
|
||||||
*buffer = '.';
|
*buffer = '.';
|
||||||
buffer--;
|
--buffer;
|
||||||
for (int i = precision + 1; i < length; i++)
|
for (int i = precision + 1; i < length; ++i)
|
||||||
{
|
{
|
||||||
*buffer = '0' - (value % 10);
|
*buffer = '0' - (value % 10);
|
||||||
value /= 10;
|
value /= 10;
|
||||||
if (value == 0)
|
if (value == 0)
|
||||||
|
{
|
||||||
break;
|
break;
|
||||||
buffer--;
|
}
|
||||||
|
--buffer;
|
||||||
}
|
}
|
||||||
if (minus)
|
if (minus)
|
||||||
{
|
{
|
||||||
buffer--;
|
--buffer;
|
||||||
*buffer = '-';
|
*buffer = '-';
|
||||||
}
|
}
|
||||||
return buffer;
|
return buffer;
|
||||||
|
Loading…
Reference in New Issue
Block a user