# Decimal, Float, and Value functions

**Applies to:**
Canvas apps
Dataverse formula columns
Desktop flows
Model-driven apps
Power Pages
Power Platform CLI

Converts a string of text or other types to a number.

## Description

Note

Power Apps only supports the **Value** function and it returns a **Float** value. Support for the **Decimal** and **Float** functions will be added soon.

Use the **Decimal**, **Float**, and **Value** functions to convert a string of text that contains number characters to a numeric value. Use these function when you need to perform calculations on numbers that were entered as text by a user. These functions can also be used to convert other types to a number, such as date/time and Boolean.

The **Value** function will return the default numeric data type for the Power Fx host you are using, which is usually **Decimal** and the best choice for most situations. Use the **Decimal** and **Float** functions when you need a specific data type for a particular scenario, such as a scientific calculation with a very large number. For more details on working with these data types, see the Numbers section of Data types.

Different languages interpret **,** and **.** differently. By default, the text is interpreted in the language of the current user. You can specify the language to use with a language tag, using the same language tags that are returned by the **Language** function.

Notes on the format of the string:

- The string may be prefixed with the currency symbol for the current language. The currency symbol is ignored. Currency symbols for other languages aren't ignored.
- The string may be include a percent sign (
**%**) at the end, indicating that it's a percentage. The number will be divided by 100 before being returned. Percentages and currency symbols can't be mixed. - The string may be in scientific notation, with 12 x 10
^{3}expressed as "12e3".

If the number isn't in a proper format, these functions will return an error.

To convert date and time values, use the **DateValue**, **TimeValue**, or **DateTimeValue** functions.

## Syntax

**Decimal**( *String* [, *LanguageTag* ] )

**Float**( *String* [, *LanguageTag* ] )

**Value**( *String* [, *LanguageTag* ] )

*String*- Required. String to convert to a numeric value.*LanguageTag*- Optional. The language tag in which to parse the string. If not specified, the language of the current user is used.

**Decimal**( *Untyped* )

**Float**( *Untyped* )

**Value**( *Untyped* )

*Untyped*- Required.**Untyped object**that represents a number. Acceptable values are dependent on the untyped provider. For**JSON**, the untyped object is expected to be a JSON number, boolean, or text that can be converted to a number. Keep in mind that locale-related formats are important considerations when communicating with external systems.

## Examples

The user running these formulas is located in the United States and has selected English as their language. The **Language** function is returning "en-US". The Power Fx host uses **Decimal** by default.

### Value and Decimal

Since we are using a host that has **Decimal** as the default, **Value** and **Decimal** will return the same results.

Formula | Description | Result |
---|---|---|

Value( "123.456" )Decimal( "123.456" ) |
The default language of "en-US" will be used, which uses a period as the decimal separator. | 123.456 (Decimal) |

Value( "123.456", "es-ES" )Decimal( "123.456", "es-ES" ) |
"es-ES" is the language tag for Spanish in Spain. In Spain, a period is a thousands separator. | 123456 (Decimal) |

Value( "123,456" )Decimal( "123,456" ) |
The default language of "en-US" will be used, which uses a comma as a thousands separator. | 123456 (Decimal) |

Value( "123,456", "es-ES" )Decimal( "123,456", "es-ES" ) |
"es-ES" is the language tag for Spanish in Spain. In Spain, a comma is the decimal separator. | 123.456 (Decimal) |

Value( "12.34%" )Decimal( "12.34%" ) |
The percentage sign at the end of the string indicates that this is a percentage. | 0.1234 (Decimal) |

Value( "$ 12.34" )Decimal( "$ 12.34" ) |
The currency symbol for the current language is ignored. | 12.34 (Decimal) |

Value( "24e3" )Decimal( "24e3" ) |
Scientific notation for 24 x 10^{3}. |
24000 (Decimal) |

Value( true )Decimal( true ) |
Converts a Boolean to a number, 0 for false and 1 for true |
1 Decimal |

### Float

The **Float** function will have very close to the same results as above. Since 123.456 cannot be precisely represented in **Float**, the result is an approximation that is very close (123.456000000000003069544618484E2) and compounding rounding errors calculations could result in an unexpected result. The resulting type will be **Float** instead.

Where things diverge is if larger or smaller numbers are used.

Formula | Description | Result |
---|---|---|

Float( 1e100 ) |
Because the literal number `1e100` is beyond the range of a Decimal, this results in an error before ever calling the Float function. |
error (overflow) |

Decimal( 1e100 ) |
Same problem as with the Float function. |
error (overflow) |

Float( "1e100" ) |
The number in the text string is within the range of Float numbers. |
1e100 Float |

Decimal( "1e100" ) |
The number in the text string is beyond the range of Decimal numbers. |
error (overflow) |

Float( "10000000000.0000000001" ) |
The number in the text string is within the range of Float numbers. However, the number requires more precision than a Float can provide and will be truncated. |
1 (Float) |

Decimal( "10000000000.0000000001" ) |
The number in the text string is within both the range and precision of a Decimal numbers. |
10000000000.0000000001 (Decimal) |