unoplatform/uno · error · Exception
Expected digits after floating point.
Error message
Expected digits after floating point.
What it means
When parsing a numeric literal argument in x:Bind, a '.' is treated as the start of a fractional part and must be followed by at least one digit. A '.' with no following digit (e.g. '3.') throws. Example trigger: {x:Bind Foo(3.)}.
Source
Thrown at src/SourceGenerators/Uno.UI.SourceGenerators/XamlGenerator/Utils/XBindExpressionParser.CoreParser.cs:124
var literal = _xBind.Substring(oldPosition, ++_position - oldPosition);
return new XBindLiteralArgument() { LiteralArgument = literal };
}
else if (char.IsDigit(Current))
{
// literal numeric argument
var oldPosition = _position;
while (char.IsDigit(Current))
{
_position++;
}
if (Current == '.')
{
_position++;
if (!char.IsDigit(Current))
{
throw new Exception("Expected digits after floating point.");
}
while (char.IsDigit(Current))
{
_position++;
}
}
var literal = _xBind.Substring(oldPosition, _position - oldPosition);
return new XBindLiteralArgument() { LiteralArgument = literal };
}
return new XBindPathArgument() { Path = ParseXBindPath() };
}
private void SkipWhitespaces()
{
while (char.IsWhiteSpace(Current))View on GitHub (pinned to 0418340488)
Solutions
- Provide at least one digit after the '.', e.g. 3.0 instead of 3.
- Drop the '.' if an integer was intended.
Example fix
<!-- before -->
<TextBlock Text="{x:Bind Scale(3.)}" />
<!-- after -->
<TextBlock Text="{x:Bind Scale(3.0)}" /> Defensive patterns
Strategy: validation
Validate before calling
// Lint rule: a '.' inside a numeric x:Bind argument must be followed by a digit.
static bool FractionWellFormed(string num)
{ int i = num.IndexOf('.'); return i < 0 || (i + 1 < num.Length && char.IsDigit(num[i + 1])); } Prevention
- Write full fractional literals (3.0, not 3.) in x:Bind.
- Drop the decimal point when an integer is intended.
When it happens
Trigger: A numeric x:Bind argument ends in '.' with no fractional digits, e.g. {x:Bind Foo(3.)} or {x:Bind Foo(.5)} when the integer portion is absent is handled separately, but '3.' specifically triggers this.
Common situations: Typo in a numeric x:Bind literal; trailing decimal point.
Related errors
- Expected end of x:Bind expression or start of argument list.
- Expected end of expression after invocation.
- Expected ')' after parsing invocation arguments
- Missing closing quote
- Missing parenthesis?
AI-assisted analysis of unoplatform/uno@0418340488 (2026-08-13).
Data as JSON: /api/errors/75f3061be87bbf52.
Report an issue: GitHub.