---
page_title: 'Plugin Development - Framework: Float64 Function Parameter'
description: >-
  Learn the float64 function parameter type in the provider development framework.
---

# Float64 Function Parameter

<Tip>

Use [Int64 Parameter](/terraform/plugin/framework/functions/parameters/int64) for 64-bit integer numbers. Use [Number Parameter](/terraform/plugin/framework/functions/parameters/number) for arbitrary precision numbers.

</Tip>

Float64 function parameters expect a 64-bit floating point number value from a practitioner configuration. Values are accessible in function logic by the Go built-in `float64` type, Go built-in `*float64` type, or the [framework float64 type](/terraform/plugin/framework/handling-data/types/float64).

In this Terraform configuration example, a float64 parameter is set to the value `1.23`:

```hcl
provider::example::example(1.23)
```

## Function Definition

Use the [`function.Float64Parameter` type](https://pkg.go.dev/github.com/hashicorp/terraform-plugin-framework/function#Float64Parameter) in the [function definition](/terraform/plugin/framework/functions/implementation#definition-method) to accept a float64 value.

In this example, a function definition includes a first position float64 parameter:

```go
func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) {
    resp.Definition = function.Definition{
        // ... other Definition fields ...
        Parameters: []function.Parameter{
            function.Float64Parameter{
                Name: "float64_param",
                // ... potentially other Float64Parameter fields ...
            },
        },
    }
}
```

If the float64 value should be the element type of a [collection parameter type](/terraform/plugin/framework/functions/parameters#collection-parameter-types), set the `ElementType` field according to the [framework float64 type](/terraform/plugin/framework/handling-data/types/float64). Refer to the collection parameter type documentation for additional details.

If the float64 value should be a value type of an [object parameter type](/terraform/plugin/framework/functions/parameters#object-parameter-type), set the `AttributeTypes` map value according to the [framework float64 type](/terraform/plugin/framework/handling-data/types/float64). Refer to the object parameter type documentation for additional details.

### Allow Null Values

By default, Terraform will not pass null values to the function logic. Use the `AllowNullValue` field to explicitly allow null values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowNullValue` requires using a Go pointer type or [framework float64 type](/terraform/plugin/framework/handling-data/types/float64) when reading argument data.

### Allow Unknown Values

By default, Terraform will not pass unknown values to the function logic. Use the `AllowUnknownValues` field to explicitly allow unknown values, if there is a meaningful distinction that should occur in function logic. Enabling `AllowUnknownValues` requires using a [framework float64 type](/terraform/plugin/framework/handling-data/types/float64) when reading argument data.

### Custom Types

You may want to build your own data value and type implementations to allow your provider to combine validation and other behaviors into a reusable bundle. This helps avoid duplication and ensures consistency. These implementations use the `CustomType` field in the parameter type.

Refer to [Custom Types](/terraform/plugin/framework/handling-data/types/custom) for further details on creating provider-defined types and values.

### Documentation

Refer to [function documentation](/terraform/plugin/framework/functions/documentation) for information about the `Name`, `Description`, and `MarkdownDescription` fields available.

## Reading Argument Data

The [function implementation](/terraform/plugin/framework/functions/implementation) documentation covers the general methods for reading function argument data in function logic.

When retrieving the argument value for this parameter:

* If `CustomType` is set, use its associated value type.
* If `AllowUnknownValues` is enabled, you must use the [framework float64 type](/terraform/plugin/framework/handling-data/types/float64).
* If `AllowNullValue` is enabled, you must use the Go built-in `*float64` type or [framework float64 type](/terraform/plugin/framework/handling-data/types/float64).
* Otherwise, use the Go built-in `float64` type, Go built-in `*float64` type, or [framework float64 type](/terraform/plugin/framework/handling-data/types/float64).

In this example, a function defines a single float64 parameter and accesses its argument value:

```go
func (f ExampleFunction) Definition(ctx context.Context, req function.DefinitionRequest, resp *function.DefinitionResponse) {
    resp.Definition = function.Definition{
        // ... other Definition fields ...
        Parameters: []function.Parameter{
            function.Float64Parameter{
                Name: "float64_param",
                // ... potentially other Float64Parameter fields ...
            },
        },
    }
}

func (f ExampleFunction) Run(ctx context.Context, req function.RunRequest, resp *function.RunResponse) {
    var float64Arg float64
    // var float64Arg *float64 // e.g. with AllowNullValue, where Go nil equals Terraform null
    // var float64Arg types.Float64 // e.g. with AllowUnknownValues or AllowNullValue

    resp.Error = function.ConcatFuncErrors(resp.Error, req.Arguments.Get(ctx, &float64Arg))

    // float64Arg is now populated
    // ... other logic ...
}
```
