- Overview
- Tutorials
- Getting started
- Get started with Canton and the JSON Ledger API
- Get Started with Canton, the JSON Ledger API, and TypeScript
- Get started with Canton Network App Dev Quickstart
- Get started with smart contract development
- Basic contracts
- Test templates using Daml scripts
- Build the Daml Archive (.dar) file
- Data types
- Transform contracts using choices
- Add constraints to a contract
- Parties and authority
- Compose choices
- Handle exceptions
- Work with dependencies
- Functional programming 101
- The Daml standard library
- Test Daml contracts
- Next steps
- Application development
- Getting started
- Development how-tos
- Component how-tos
- Explanations
- References
- Application development
- Smart contract development
- Daml language cheat sheet
- Daml language reference
- Daml standard library
- DA.Action.State.Class
- DA.Action.State
- DA.Action
- DA.Assert
- DA.Bifunctor
- DA.Crypto.Text
- DA.Date
- DA.Either
- DA.Exception
- DA.Fail
- DA.Foldable
- DA.Functor
- DA.Internal.Interface.AnyView.Types
- DA.Internal.Interface.AnyView
- DA.List.BuiltinOrder
- DA.List.Total
- DA.List
- DA.Logic
- DA.Map
- DA.Math
- DA.Monoid
- DA.NonEmpty.Types
- DA.NonEmpty
- DA.Numeric
- DA.Optional
- DA.Record
- DA.Semigroup
- DA.Set
- DA.Stack
- DA.Text
- DA.TextMap
- DA.Time
- DA.Traversable
- DA.Tuple
- DA.Validation
- GHC.Show.Text
- GHC.Tuple.Check
- Prelude
- Smart contract upgrading reference
- Glossary of concepts
DA.Numeric¶
Data Types¶
data RoundingMode
Rounding modes.
Round away from zero.
Round towards zero.
Round towards positive infinity.
Round towards negative infinity.
Round towards the nearest neighbor unless both neighbors are equidistant, in which case round away from zero.
Round towards the nearest neighbor unless both neighbors are equidistant, in which case round towards zero.
Round towards the nearest neighbor unless both neighbors are equidistant, in which case round towards the even neighbor.
Do not round. Raises an error if the result cannot be represented without rounding at the targeted scale.
Functions¶
- mul
: NumericScale n3 => Numeric n1 -> Numeric n2 -> Numeric n3
Multiply two numerics. Both inputs and the output may have different scales, unlike
(*)
which forces all numeric scales to be the same. Raises an error on overflow, rounds to chosen scale otherwise.
- div
: NumericScale n3 => Numeric n1 -> Numeric n2 -> Numeric n3
Divide two numerics. Both inputs and the output may have different scales, unlike
(/)
which forces all numeric scales to be the same. Raises an error on overflow, rounds to chosen scale otherwise.
- cast
: NumericScale n2 => Numeric n1 -> Numeric n2
Cast a Numeric. Raises an error on overflow or loss of precision.
- castAndRound
: NumericScale n2 => Numeric n1 -> Numeric n2
Cast a Numeric. Raises an error on overflow, rounds to chosen scale otherwise.
- shift
: NumericScale n2 => Numeric n1 -> Numeric n2
Move the decimal point left or right by multiplying the numeric value by 10^(n1 - n2). Does not overflow or underflow.
- pi
: NumericScale n => Numeric n
The number pi.
- epsilon
: NumericScale n => Numeric n
The minimum strictly positive value that can be represented by a numeric of scale
n
.
- roundNumeric
: NumericScale n => Int -> RoundingMode -> Numeric n -> Numeric n
Round a
Numeric
number. The value ofround n r a
is the value ofa
rounded ton
decimal places (i.e. scale), according to the rounding moder
.This will fail when using the
RoundingUnnecessary
mode for a number that cannot be represented exactly with at mostn
decimal places.