Float (2 Dec)
One authoritative 0.35 for every socket that wants it
- FLOAT
Of the three float constants in this pack, this is the one I'd actually keep pinned in a template. Two decimals is the natural grain of the numbers this hobby runs on - denoise, CFG, LoRA strength, ControlNet strength - and it's the variant that matches the precision ComfyUI's own nodes use for those fields.
What it's for
The case is always the same: a value you set in five places. Your inpaint branch wants denoise 0.35. So does the hires second pass. So does the detailer. Type it three times and the first time you tune one you've silently created two experimental conditions disguised as one image.
Pull it into a node and everything moves together. This is the pattern the plumbing layer exists for - one source, many consumers - and it's worth doing even in a small graph, because the failure mode of not doing it (comparing 0.35 against 0.35 against 0.30 and not knowing it) is invisible.
Two decimals is also the honest grain for tuning: denoise below about 0.1 either does nothing or does something you didn't intend, so a third decimal place is decoration. The inpainting reference ranges people actually quote - 0–0.3 subtle, 0.3–0.6 moderate, 0.6–0.8 structural, 0.8–1.0 regenerate - are all two-decimal numbers.
How it works
Input float_val: FLOAT, default 0.00, step 0.01, tooltip "Float with two decimal places." Output FLOAT, one socket. The class returns float(float_val).
So: the step is 0.01, meaning the widget and the arrow keys move in hundredths, and there is no rounding in the node itself. Unlike Float (No Dec) in this pack - which genuinely does float(int(round(x))) - this one passes the value through untouched. If you need a value snapped to two decimals, use Round from the same pack with decimals set to 2 and take its FLOAT output; that node does real rounding and also hands you a pre-formatted STRING for filenames.
To use it: right-click the target's numeric widget → Convert widget to input → drag the FLOAT wire in. Works on samplers, detailers, LoRA loaders, ControlNet appliers, anything with a float socket.
Installing it
ComfyUI-MDSNodes, by MarwanDSAI. Install through ComfyUI Manager - search ComfyUI-MDSNodes (the README's spelling) or MDSNodes - or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/MarwanDSAI/comfyui-mdsnodes
# restart ComfyUI
Nothing further. The repo's requirements.txt is empty, the README says no extra packages are needed, and there are no model downloads in this pack at all - it's a utility layer, not a loader.
Search Float (2 Dec) on the canvas. Category MDSNodes/Constants.
Common issues
Not in the search results. All of these constants came in version 1.8.0 (late Aug–Sep 2026). Update the pack through Manager and restart ComfyUI - nodes only register at startup.
Three near-identical nodes and you grabbed the wrong one. Float (No Dec) rounds to a whole number in Python, Float (1 Dec) and this one only set the widget's step. If your problem is "the value isn't exactly what I typed," only the first and Round do anything about it.
The wire won't attach to a step or seed field. Those are INT sockets. Run the float through Round with 0 decimals, or use Integer from the same pack.
You changed the constant and the image didn't change. Check the wire actually lands on the branch that ran - in a graph with a bypassed group, a constant feeding the muted side changes nothing and reports nothing. Equally, if you're comparing two runs, lock the seed and change one thing; that rule applies to every number in this pack.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| float_val | FLOAT | 0.00-18446744073709550000–18446744073709550000 | Float with two decimal places. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| FLOAT | FLOAT | The float value with 2 decimals. |