1
0
forked from Mirror/wren
Files
wren/doc/site/core/num.markdown
Bob Nystrom 58e4d26648 "IO" -> "System".
Get rid of the separate opt-in IO class and replace it with a core
System class.

- Remove wren_io.c, wren_io.h, and io.wren.
- Remove the flags that disable it.
- Remove the overloads for print() with different arity. (It was an
  experiment, but I don't think it's that useful.)
- Remove IO.read(). That will reappear using libuv in the CLI at some
  point.
- Remove IO.time. Doesn't seem to have been used.
- Update all of the tests, docs, etc.

I'm sorry for all the breakage this causes, but I think "System" is a
better name for this class (it makes it natural to add things like
"System.gc()") and frees up "IO" for referring to the CLI's IO module.
2015-09-15 07:46:09 -07:00

3.5 KiB

^title Num Class ^category core

Static Methods

Num.fromString(value)

Attempts to parse value as a decimal literal and return it as an instance of Num. If the number cannot be parsed null will be returned.

It is a runtime error if value is not a string.

Num.pi

The value of π.

Methods

abs

The absolute value of the number.

:::dart
-123.abs // 123

acos

The arc cosine of the number.

asin

The arc sine of the number.

atan

The arc tangent of the number.

atan(x)

The arc tangent of the number when divided by x, using the signs of the two numbers to determine the quadrant of the result.

ceil

Rounds the number up to the nearest integer.

:::dart
1.5.ceil // 2
(-3.2).ceil // -3

cos

The cosine of the number.

floor

Rounds the number down to the nearest integer.

:::dart
1.5.floor    // 1
(-3.2).floor // -4

isNan

Whether the number is not a number. This is false for normal number values and infinities, and true for the result of 0/0, the square root of a negative number, etc.

sin

The sine of the number.

sqrt

The square root of the number. Returns nan if the number is negative.

tan

The tangent of the number.

- operator

Negates the number.

:::dart
var a = 123
-a // -123

-(other), +(other), /(other), *(other) operators

The usual arithmetic operators you know and love. All of them do 64-bit floating point arithmetic. It is a runtime error if the right-hand operand is not a number. Wren doesn't roll with implicit conversions.

%(denominator) operator

The floating-point remainder of this number divided by denominator.

It is a runtime error if denominator is not a number.

<(other), >(other), <=(other), >=(other) operators

Compares this and other, returning true or false based on how the numbers are ordered. It is a runtime error if other is not a number.

~ operator

Performs bitwise negation on the number. The number is first converted to a 32-bit unsigned value, which will truncate any floating point value. The bits of the result of that are then negated, yielding the result.

&(other) operator

Performs bitwise and on the number. Both numbers are first converted to 32-bit unsigned values. The result is then a 32-bit unsigned number where each bit is true only where the corresponding bits of both inputs were true.

It is a runtime error if other is not a number.

|(other) operator

Performs bitwise or on the number. Both numbers are first converted to 32-bit unsigned values. The result is then a 32-bit unsigned number where each bit is true only where the corresponding bits of both inputs were true.

It is a runtime error if other is not a number.

..(other) operator

Creates a Range representing a consecutive range of numbers from the beginning number to the ending number.

:::dart
var range = 1.2..3.4
System.print(range.min)         // 1.2
System.print(range.max)         // 3.4
System.print(range.isInclusive) // true

...(other) operator

Creates a Range representing a consecutive range of numbers from the beginning number to the ending number not including the ending number.

:::dart
var range = 1.2...3.4
System.print(range.min)         // 1.2
System.print(range.max)         // 3.4
System.print(range.isInclusive) // false