Numeric type conversion issue in if-else condition comparison #20292

Closed
opened 2026-02-21 20:06:43 -05:00 by yindo · 0 comments
Owner

Originally created by @qiqizjl on GitHub (Nov 13, 2025).

Self Checks

  • I have read the Contributing Guide and Language Policy.
  • This is only for bug report, if you would like to ask a question, please head to Discussions.
  • I have searched for existing issues search for existing issues, including closed ones.
  • I confirm that I am using English to submit this report, otherwise it will be closed.
  • 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :)
  • Please do not modify this template :) and fill in all the required fields.

Dify version

1.10.0-rc1

Cloud or Self Hosted

Self Hosted (Docker)

Steps to reproduce

  1. Create a workflow with an if-else node
  2. Add a condition: integer variable 0 compared with string "0.95" using operator <=
  3. The condition incorrectly evaluates to False instead of True
Image

✔️ Expected Behavior

When comparing numeric values, the system should correctly convert types:

  • 0 <= "0.95" should evaluate to True
  • 1 >= "0.95" should evaluate to True
  • 1.1 >= "0.95" should evaluate to True

Actual Behavior

The comparison fails because when comparing an integer with a float string, the code converts the string to integer (losing precision). For example, "0.95" becomes 0, so 0 <= 0 evaluates incorrectly.

Originally created by @qiqizjl on GitHub (Nov 13, 2025). ### Self Checks - [x] I have read the [Contributing Guide](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) and [Language Policy](https://github.com/langgenius/dify/issues/1542). - [x] This is only for bug report, if you would like to ask a question, please head to [Discussions](https://github.com/langgenius/dify/discussions/categories/general). - [x] I have searched for existing issues [search for existing issues](https://github.com/langgenius/dify/issues), including closed ones. - [x] I confirm that I am using English to submit this report, otherwise it will be closed. - [x] 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :) - [x] Please do not modify this template :) and fill in all the required fields. ### Dify version 1.10.0-rc1 ### Cloud or Self Hosted Self Hosted (Docker) ### Steps to reproduce 1. Create a workflow with an if-else node 2. Add a condition: integer variable `0` compared with string `"0.95"` using operator `<=` 3. The condition incorrectly evaluates to `False` instead of `True` <img width="1376" height="734" alt="Image" src="https://github.com/user-attachments/assets/7b33cb1f-52d8-44c3-adc8-b2eecb655e8f" /> ### ✔️ Expected Behavior When comparing numeric values, the system should correctly convert types: - `0 <= "0.95"` should evaluate to `True` - `1 >= "0.95"` should evaluate to `True` - `1.1 >= "0.95"` should evaluate to `True` ### ❌ Actual Behavior The comparison fails because when comparing an integer with a float string, the code converts the string to integer (losing precision). For example, `"0.95"` becomes `0`, so `0 <= 0` evaluates incorrectly.
yindo added the 🐞 bug label 2026-02-21 20:06:43 -05:00
yindo closed this issue 2026-02-21 20:06:43 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#20292