Number conversions
No edit summary
(Automatically adding template at the end of the page.)
 
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
The numeric types float, double, decimal and int are sort of apples of the same tree and MDriven expose ways to go from all numeric types to decimal. The operator is called toDecimal.
The numeric types [[float]], [[double]], [[decimal]], and [[Integer|int]] are sort of apples from the same tree and MDriven exposes ways to go from all numeric types to decimal. The operator is called ''toDecimal''.


Sometimes you may want to assign from one type to another like this:
Sometimes, you may want to assign from one type to another like this:
  self.PaymentMenuRequest.VatPercent:=vTypAvBiljett.BiljettPrisMoms
  self.PaymentMenuRequest.VatPercent:=vTypAvBiljett.BiljettPrisMoms
but you get an error like: 998: In ":=", one of the arguments must conform to the other (Nullable<System.Double> and Nullable<System.Decimal> does not)
but you get an error like 998: In <code>":="</code>, one of the arguments must conform to the other (Nullable<System.Double> and Nullable<System.Decimal> do not).


Solve like this:  
Solve like this:  
  self.PaymentMenuRequest.VatPercent:=vTypAvBiljett.BiljettPrisMoms.todouble
  self.PaymentMenuRequest.VatPercent:=vTypAvBiljett.BiljettPrisMoms.todouble
These are valid assignments but you change precision and loose fractions when converting to simpler types
These are valid assignments, but you change precision and lose fractions when converting to simpler types:
 
  self.SomeInt:=self.SomeDouble
  self.SomeInt:=self.SomeDouble
 
  self.SomeDouble:=self.SomeInt
  self.SomeDouble:=self.SomeInt
 
  self.SomeDecimal:=self.SomeInt
  self.SomeDecimal:=self.SomeInt
 
  self.SomeDecimal:=self.SomeDouble.todecimal
  self.SomeDecimal:=self.SomeDouble.todecimal
 
  self.SomeInt:=self.SomeDecimal
  self.SomeInt:=self.SomeDecimal
self.SomeDouble:=self.SomeDecimal.todouble
In OCL you can also use a lot of the operators from C#, which are automatically added to the OCL and EAL language.


  self.SomeDouble:=self.SomeDecimal.todouble
For example
  Decimal.create(5.4).ToInt32
Creates a decimal with the value 5.4 and then converts it to an 32 bit integer, losing the fraction .4 in the process.
[[Category:OCL]]
{{Edited|July|12|2024}}

Latest revision as of 15:38, 10 February 2024

The numeric types float, double, decimal, and int are sort of apples from the same tree and MDriven exposes ways to go from all numeric types to decimal. The operator is called toDecimal.

Sometimes, you may want to assign from one type to another like this:

self.PaymentMenuRequest.VatPercent:=vTypAvBiljett.BiljettPrisMoms

but you get an error like 998: In ":=", one of the arguments must conform to the other (Nullable<System.Double> and Nullable<System.Decimal> do not).

Solve like this:

self.PaymentMenuRequest.VatPercent:=vTypAvBiljett.BiljettPrisMoms.todouble

These are valid assignments, but you change precision and lose fractions when converting to simpler types:

self.SomeInt:=self.SomeDouble

self.SomeDouble:=self.SomeInt

self.SomeDecimal:=self.SomeInt

self.SomeDecimal:=self.SomeDouble.todecimal

self.SomeInt:=self.SomeDecimal

self.SomeDouble:=self.SomeDecimal.todouble

In OCL you can also use a lot of the operators from C#, which are automatically added to the OCL and EAL language.

For example

Decimal.create(5.4).ToInt32

Creates a decimal with the value 5.4 and then converts it to an 32 bit integer, losing the fraction .4 in the process.

This page was edited 96 days ago on 02/10/2024. What links here