Class VBDecimalType
A VBNumericType<T> representing the Decimal data type.
public sealed record VBDecimalType : VBNumericType<decimal>, IEquatable<VBType>, IEquatable<VBIntrinsicType>, IEquatable<VBNumericType>, IEquatable<VBNumericType<decimal>>, IFixedPointNumericType, INumericType, IEquatable<VBDecimalType>
- Inheritance
-
VBDecimalType
- Implements
- Inherited Members
- Extension Methods
Remarks
The managed type of a value of this data type is decimal.
👉 Implements IFixedPointNumericType.
Constructors
VBDecimalType()
A VBNumericType<T> representing the Decimal data type.
public VBDecimalType()
Remarks
The managed type of a value of this data type is decimal.
👉 Implements IFixedPointNumericType.
Properties
DefaultValue
Gets the default value for this data type.
public override VBTypedValue DefaultValue { get; }
Property Value
Remarks
⚠️ Derived types must back the implementation of this property with a thread-safe private static readonly Lazy<T>.
Failure to do so would lock up the static context initialization of the StaticSymbol symbols.
ManagedMaxValue
Gets the maximum representable managed (.net) value for this data type.
public override double ManagedMaxValue { get; }
Property Value
ManagedMinValue
Gets the minimum representable managed (.net) value for this data type.
public override double ManagedMinValue { get; }
Property Value
MaxValue
Gets the maximum representable value for this data type.
public static VBDecimalValue MaxValue { get; }
Property Value
MinValue
Gets the minimum representable value for this data type.
public static VBDecimalValue MinValue { get; }
Property Value
TypeInfo
The Decimal data type.
public static VBDecimalType TypeInfo { get; }
Property Value
Zero
Gets the value 0 (zero) representation of this data type.
public static VBDecimalValue Zero { get; }
Property Value
Methods
CreateValue(IBindingHandle)
Creates a value of this type bound to handle.
public override VBTypedValue CreateValue(IBindingHandle handle)
Parameters
handleIBindingHandle
Returns
Remarks
The base implementation throws: only types that can hold a runtime value override this
(matches the intent of the removed VBTypedValueFactory.CreateValue(VBType) switch,
which returned null for the rest).
CreateValue(double)
Creates a value of this numeric type holding value, converted to this
type's managed representation (banker's rounding for integral targets, as per Convert).
public override VBNumericTypedValue CreateValue(double value)
Parameters
valuedouble
Returns
Holds(double)
Whether a double is within the range of this type (MS-VBAL 5.5.1.2.1): one a value of this type can be made of (CreateValue(double)) without leaving the range.
public override bool Holds(double value)
Parameters
valuedoubleThe value.
NaNis within no range.
Returns
Remarks
👉 The base is within ManagedMinValue and ManagedMaxValue, both included, which is right for a type whose bounds are double values. A type whose bound is not one has, as its ManagedMaxValue or ManagedMinValue, the double nearest it, which can be past it: that type overrides this, and leaves out such a bound.