# Float as String With Precision

## Overview

Author: Rama (talk)

Here is my function for obtaining a float as a string, but limiting the number of decimal places.

``` And including appropriate rounding!
```

## Thank You Epic

Please note I am leveraging all the hard work of Epic Engineers by using the conversion functions provided with the FText class.

Thank You Epic!

## Static

I recommend making your own static library of functions to use anywhere in your code, if you are just wanting to test stuff just remove the word static and put this in any .h file of your choosing

## Code For You

```//In YourFunctionLibrary.h

//Float as String With Precision!
static FORCEINLINE FString GetFloatAsStringWithPrecision(float TheFloat, int32 Precision, bool IncludeLeadingZero=true)
{
//Round to integral if have something like 1.9999 within precision
float Rounded = roundf(TheFloat);
if(FMath::Abs(TheFloat - Rounded) < FMath::Pow(10,-1 * Precision))
{
TheFloat = Rounded;
}
FNumberFormattingOptions NumberFormat;					//Text.h
NumberFormat.MinimumIntegralDigits = (IncludeLeadingZero) ? 1 : 0;
NumberFormat.MaximumIntegralDigits = 10000;
NumberFormat.MinimumFractionalDigits = Precision;
NumberFormat.MaximumFractionalDigits = Precision;
return FText::AsNumber(TheFloat, &NumberFormat).ToString();
}

//Float as FText With Precision!
static FORCEINLINE FText GetFloatAsTextWithPrecision(float TheFloat, int32 Precision, bool IncludeLeadingZero=true)
{
//Round to integral if have something like 1.9999 within precision
float Rounded = roundf(TheFloat);
if(FMath::Abs(TheFloat - Rounded) < FMath::Pow(10,-1 * Precision))
{
TheFloat = Rounded;
}
FNumberFormattingOptions NumberFormat;					//Text.h
NumberFormat.MinimumIntegralDigits = (IncludeLeadingZero) ? 1 : 0;
NumberFormat.MaximumIntegralDigits = 10000;
NumberFormat.MinimumFractionalDigits = Precision;
NumberFormat.MaximumFractionalDigits = Precision;
return FText::AsNumber(TheFloat, &NumberFormat);
}
```

Please note in my function you can opt to have a value of 0.5 display as

``` .5
```

or

``` 0.5
```

Based on whether you want that leading zero or not!

Yay!

## Example Usage

```const float MyFloat = 16.16621111111111111111;

FString Str = "My Float is ";
Str += UYourFunctionLibrary::GetFloatAsStringWithPrecision(MyFloat,2);
ClientMessage(Str);
```

## Output

``` My Float is 16.17
```