uCalc API Version: 2.1.3-preview.2 Released: 6/16/2026

Warning

uCalc API Preview Release Notice:The documentation describes the intended behavior of the API. The current preview build contains incomplete features, unoptimized performance, and is subject to breaking changes.

ArgDbl

Method

Product: 

Fast Math Parser

Class: 

Callback

Retrieves a callback argument specifically as a double-precision floating-point number, with automatic type conversion.

Syntax

ArgDbl(int)

Parameters

index
int
The 1-based index of the argument. The first argument is at index 1. For better performance with the first two arguments, consider using Arg1() and Arg2().

Return

double

The argument's value, converted to a double-precision floating-point number if necessary.

Remarks

The ArgDbl method retrieves an argument passed to a callback function, ensuring the value is returned as a double. It is a type-specific accessor that improves code clarity by making the expected data type explicit.

Functional Equivalence with Arg()

This method is functionally identical to its more generic counterpart, Arg. The Arg() method exists primarily for historical reasons, as double is the default numeric type in uCalc. Using ArgDbl is recommended when you specifically expect a floating-point number, as it makes your code more self-documenting.

Implicit Type Conversion

A key feature of ArgDbl is its ability to perform automatic type conversion. If a function parameter was defined as a different numeric type (e.g., Int32, Boolean), and the callback retrieves it using ArgDbl, uCalc will safely convert the value to a double before returning it. This provides flexibility when a function needs to handle various numeric inputs.

💡 Comparative Analysis

In many frameworks, callback arguments are passed in a generic collection, like an object[] in C# or a std::vector<std::any> in C++. Accessing a value requires explicit casting and type checking:

// Typical C# approachdouble length = (double)args[0]; 

This approach is verbose and can lead to runtime InvalidCastException errors if the type is not what was expected.

uCalc's type-specific accessors like ArgDbl, ArgInt32, and ArgStr streamline this process. They handle the type conversion internally and provide a cleaner, more robust interface, reducing boilerplate code and the potential for casting errors.

Examples

ArgDbl (same as Arg)
				
					using uCalcSoftware;

var uc = new uCalc();

static void MyArea(uCalc.Callback cb) {
   var Length = cb.ArgDbl(1); // Same as cb.Arg(1);
   var Width = cb.ArgDbl(2); // Same as cb.Arg(2);
   cb.Return(Length * Width);
}

uc.DefineFunction("Area(x, y)", MyArea);
Console.WriteLine(uc.Eval("Area(3, 4)"));
				
			
12
				
					#include <iostream>
#include "uCalc.h"

using namespace std;
using namespace uCalcSoftware;

void ucalc_call MyArea(uCalcBase::Callback cb) {
   auto Length = cb.ArgDbl(1); // Same as cb.Arg(1);
   auto Width = cb.ArgDbl(2); // Same as cb.Arg(2);
   cb.Return(Length * Width);
}
int main() {
   uCalc uc;
   uc.DefineFunction("Area(x, y)", MyArea);
   cout << uc.Eval("Area(3, 4)") << endl;
}
				
			
12
				
					Imports System
Imports uCalcSoftware
Public Module Program
   
   Public Sub MyArea(ByVal cb As uCalc.Callback)
      Dim Length = cb.ArgDbl(1) '// Same as cb.Arg(1);
      Dim Width = cb.ArgDbl(2) '// Same as cb.Arg(2);
      cb.Return(Length * Width)
   End Sub
   Public Sub Main()
      Dim uc As New uCalc()
      uc.DefineFunction("Area(x, y)", AddressOf MyArea)
      Console.WriteLine(uc.Eval("Area(3, 4)"))
   End Sub
End Module
				
			
12