Float
Float — Floating-point arithmetic and operations.
Floats in Beamtalk are IEEE 754 double-precision (Erlang floats). Mixed arithmetic with integers auto-promotes to float.
BEAM Mapping
Beamtalk floats map directly to Erlang floats.
Examples
3.14 class // => Float
1.0 + 2.5 // => 3.5
3.7 rounded // => 4
Methods
- class » pi
- class » e
- class » infinity
- + other
- - other
- * other
- / other
- =:= other
- =/= other
- /= other
- < other
- > other
- <= other
- >= other
- negated
- abs
- min: other
- max: other
- rounded
- ceiling
- floor
- truncated
- isNaN
- isInfinite
- isZero
- asInteger
- asString
- printString
- sin
- cos
- tan
- asin
- acos
- atan
- atan2: other
- sqrt
- log
- ln
- log2
- log10
- exp
- raisedTo: exponent
Class Methods
The mathematical constant pi (π ≈ 3.14159...).
Examples
Float pi // => 3.141592653589793
Euler's number (e ≈ 2.71828...).
Examples
Float e // => 2.718281828459045
Positive infinity.
Note: BEAM does not support IEEE 754 infinity. This method
is provided for API completeness but will raise an error.
Use isInfinite to check (always returns false on BEAM).
Examples
Float infinity // => ERROR: _
Instance Methods
Add a number to the receiver.
Examples
1.5 + 2.5 // => 4.0
Subtract a number from the receiver.
Examples
5.0 - 2.5 // => 2.5
Multiply the receiver by a number.
Examples
2.5 * 4.0 // => 10.0
Divide the receiver by a number.
Examples
10.0 / 4.0 // => 2.5
Test strict equality with another number.
Examples
3.14 =:= 3.14 // => true
1.0 =:= 2.0 // => false
Test strict inequality with another number.
Examples
1.0 =/= 2.0 // => true
3.14 =/= 3.14 // => false
Test inequality with another number.
Examples
1.0 /= 2.0 // => true
3.14 /= 3.14 // => false
Test if the receiver is less than another number.
Examples
1.0 < 2.0 // => true
5.0 < 3.0 // => false
Test if the receiver is greater than another number.
Examples
5.0 > 3.0 // => true
1.0 > 2.0 // => false
Test if the receiver is less than or equal to another number.
Examples
1.0 <= 2.0 // => true
3.0 <= 3.0 // => true
Test if the receiver is greater than or equal to another number.
Examples
5.0 >= 3.0 // => true
3.0 >= 3.0 // => true
Negate the receiver.
Examples
3.14 negated // => -3.14
Absolute value of the receiver.
Examples
-3.14 abs // => 3.14
2.5 abs // => 2.5
Return the smaller of the receiver and other.
Examples
1.5 min: 3.0 // => 1.5
Return the larger of the receiver and other.
Examples
1.5 max: 3.0 // => 3.0
Round to the nearest integer.
Examples
3.7 rounded // => 4
3.2 rounded // => 3
Round up to the nearest integer.
Examples
3.2 ceiling // => 4
Round down to the nearest integer.
Examples
3.7 floor // => 3
Truncate toward zero.
Examples
3.7 truncated // => 3
-3.7 truncated // => -3
Always returns false. BEAM has no NaN representation.
Examples
3.14 isNaN // => false
Always returns false. BEAM has no Infinity representation.
Examples
3.14 isInfinite // => false
Test if the receiver is zero. Uses exact float comparison.
Examples
0.0 isZero // => true
1.0 isZero // => false
Convert the receiver to an integer (truncates).
Examples
3.7 asInteger // => 3
Convert the receiver to its string representation.
Examples
3.14 asString // => "3.14"
Return a developer-readable string representation.
Examples
3.14 printString // => "3.14"
Sine of the receiver (in radians).
Examples
0.0 sin // => 0.0
(Float pi / 2) sin // => 1.0
Cosine of the receiver (in radians).
Examples
0.0 cos // => 1.0
Tangent of the receiver (in radians).
Examples
0.0 tan // => 0.0
Arcsine of the receiver. Result in radians.
Examples
0.0 asin // => 0.0
1.0 asin // => 1.5707963267948966
Arccosine of the receiver. Result in radians.
Examples
1.0 acos // => 0.0
Arctangent of the receiver. Result in radians.
Examples
1.0 atan // => 0.7853981633974483
Two-argument arctangent. Returns the angle in radians between the positive x-axis and the point (other, self).
Examples
1.0 atan2: 1.0 // => 0.7853981633974483
Square root of the receiver.
Examples
4.0 sqrt // => 2.0
2.0 sqrt // => 1.4142135623730951
Natural logarithm (base e) of the receiver.
Examples
1.0 log // => 0.0
(Float e) log // => 1.0
Natural logarithm (base e) of the receiver. Alias for log.
Examples
1.0 ln // => 0.0
Base-2 logarithm of the receiver.
Examples
8.0 log2 // => 3.0
Base-10 logarithm of the receiver.
Examples
100.0 log10 // => 2.0
Euler's number (e) raised to the power of the receiver.
Examples
0.0 exp // => 1.0
1.0 exp // => 2.718281828459045
Raise the receiver to the power of exponent.
Examples
2.0 raisedTo: 10 // => 1024.0
Inherited Methods
From Number
Strict equality comparison.
Strict inequality comparison.
Less than.
Greater than.
Less than or equal.
Greater than or equal.
Test if the receiver is zero.
Examples
0 isZero // => true
5 isZero // => false
Test if the receiver is positive (greater than zero).
Examples
5 isPositive // => true
-3 isPositive // => false
0 isPositive // => false
Test if the receiver is negative (less than zero).
Examples
-3 isNegative // => true
5 isNegative // => false
Return 1 for positive, -1 for negative, 0 for zero.
Examples
42 sign // => 1
-7 sign // => -1
0 sign // => 0
Test if the receiver is between min and max (inclusive).
Examples
5 between: 1 and: 10 // => true
15 between: 1 and: 10 // => false
Override inspect to use printString rather than the field-based format defined in Value. Numbers are primitives, not map-based value objects.
From Value
Return a developer-readable string representation showing fields.
Produces ClassName(field: value, ...). Field values are recursively
inspected — strings are quoted, nested objects show their own inspect.
A class with no fields produces ClassName().
Examples
ValuePoint x: 3 y: 4 inspect // => "ValuePoint(x: 3, y: 4)"
ValuePoint new inspect // => "ValuePoint(x: 0, y: 0)"
From Object
Return the class of the receiver.
Examples
42 class // => Integer
"hello" class // => String
Test if the receiver is nil. Returns false for all objects except nil.
Examples
42 isNil // => false
nil isNil // => true
Test if the receiver is not nil. Returns true for all objects except nil.
Examples
42 notNil // => true
nil notNil // => false
If the receiver is nil, evaluate nilBlock. Otherwise return self.
Examples
42 ifNil: [0] // => 42
nil ifNil: [0] // => 0
If the receiver is not nil, evaluate notNilBlock with self.
Examples
42 ifNotNil: [:v | v + 1] // => 43
nil ifNotNil: [:v | v + 1] // => nil
If nil, evaluate nilBlock; otherwise evaluate notNilBlock with self.
Examples
42 ifNil: [0] ifNotNil: [:v | v + 1] // => 43
nil ifNil: [0] ifNotNil: [:v | v + 1] // => 0
If not nil, evaluate notNilBlock with self; otherwise evaluate nilBlock.
Examples
42 ifNotNil: [:v | v + 1] ifNil: [0] // => 43
nil ifNotNil: [:v | v + 1] ifNil: [0] // => 0
Return a developer-readable string representation.
Default implementation returns "a ClassName". Subclasses such as
Integer, String, and List override this to return richer output.
Examples
42 printString // => "42"
Return a user-facing string representation for display purposes.
Default implementation delegates to printString. Subclasses such as
String and Symbol override this to return a more readable form without
developer annotations (e.g. no surrounding quotes or # prefix).
Examples
42 displayString // => "42"
Inspect the receiver.
Examples
42 inspect // => "42"
Return the receiver itself. Useful for cascading side effects.
Examples
42 yourself // => 42
Return a hash value for the receiver.
Examples
42 hash
Test if the receiver responds to the given selector.
Examples
42 respondsTo: #abs // => true
Return the names of fields.
Examples
42 fieldNames // => #()
Return the value of the named field.
Examples
object fieldAt: #name
Set the value of the named field (returns new state).
Examples
object fieldAt: #name put: "Alice"
Send a unary message dynamically.
Examples
42 perform: #abs // => 42
Send a message dynamically with arguments.
Examples
3 perform: #max: withArguments: #(5) // => 5
Raise an error indicating this method must be overridden by a subclass.
Examples
self subclassResponsibility
Raise an error indicating this method has not yet been implemented.
Use this for work-in-progress stubs. Distinct from subclassResponsibility,
which signals an interface contract violation.
Examples
self notImplemented
Send aValue to the current transcript without a trailing newline.
Nil-safe: does nothing when no transcript is set (batch compile, tests).
Examples
42 show: "value: "
Send aValue to the current transcript followed by a newline.
Nil-safe: does nothing when no transcript is set (batch compile, tests).
Examples
42 showCr: "hello world"
Test if the receiver is an instance of aClass or any of its subclasses.
Examples
42 isKindOf: Integer // => true
42 isKindOf: Object // => true
#foo isKindOf: Symbol // => true
#foo isKindOf: String // => false
Raise an error with the given message.
Examples
self error: "something went wrong"
From ProtoObject
Test value equality (Erlang ==).
Examples
42 == 42 // => true
"abc" == "abc" // => true
Test value inequality (negation of ==).
Examples
1 /= 2 // => true
42 /= 42 // => false
Return the class of the receiver.
Examples
42 class // => Integer
"hello" class // => String
Handle messages the receiver does not understand. Override for custom dispatch.
Examples
42 unknownMessage // => ERROR: does_not_understand
Send a message dynamically with an arguments list.
Examples
42 perform: #abs withArguments: #() // => 42
Execute a class method in the caller's process, bypassing gen_server dispatch.
The caller takes responsibility for knowing the method does not mutate class state. Useful for long-running class methods that would otherwise block the class object's gen_server.
Limitations: only resolves methods defined directly on the target class
module (does not walk the superclass chain). Class variables and self
are not available to the method (nil and #{} are passed).
Examples
MyClass performLocally: #run:ctx: withArguments: #(input, ctx)
Send a message dynamically with an arguments list and explicit timeout.
The timeout (in milliseconds or #infinity) applies to the gen_server:call
when the receiver is an actor. For value types, timeout is ignored.
Examples
actor perform: #query withArguments: #(sql) timeout: 30000