Skip to main content
Version: Nightly

FloatableRaising

The FloatableRaising trait describes a type that can be converted to a Float64, but the conversion might raise an error (e.g.: a string).

This trait requires the type to implement the __float__() method, which can raise an error.

For example:

from std.utils import Variant

@fieldwise_init
struct MaybeFloat(FloatableRaising):
var value: Variant[Float64, NoneType]

def __float__(self) raises -> Float64:
if self.value.isa[NoneType]():
raise "Float expected"
return self.value[Float64]

A MaybeFloat can now be converted to Float64:

from std.utils import Variant

@fieldwise_init
struct MaybeFloat(FloatableRaising):
var value: Variant[Float64, NoneType]

def __float__(self) raises -> Float64:
if self.value.isa[NoneType]():
raise "Float expected"
return self.value[Float64]

try:
print(Float64(MaybeFloat(4.6)))
except:
print("error occurred")

Implemented traits

AnyType

Required methods

__float__

__float__(self: _Self) -> Float64

Get the float point representation of the value.

Returns:

Float64: The float point representation of the value.

Raises:

If the type does not have a float point representation.