Files
CavinHuang-comfyui-nodes-docs/docs/Number Operation.md
2024-05-26 20:35:16 +08:00

4.0 KiB

Documentation

WAS_Number_Operation节点旨在对两个输入数字执行多种数学运算。它支持加法、减法、除法等操作,为数值计算提供了一种多功能工具。

Input types

Required

  • number_a
    • 数学运算的第一个操作数,可以是整数或浮点数。它在确定运算结果中起着关键作用。
    • Comfy dtype: NUMBER
    • Python dtype: Union[int, float]
  • number_b
    • 数学运算的第二个操作数,也是一个整数或浮点数。它对计算至关重要,并影响最终结果。
    • Comfy dtype: NUMBER
    • Python dtype: Union[int, float]

Optional

  • operation
    • 指定要执行的数学运算类型。操作的选择直接影响计算和产生的结果类型。
    • Comfy dtype: COMBO['addition', 'subtraction', 'division', 'floor division', 'multiplication', 'exponentiation', 'modulus', 'greater-than', 'greater-than or equals', 'less-than', 'less-than or equals', 'equals', 'does not equal']
    • Python dtype: str

Output types

  • result
    • 数学运算的结果,可以是一个数字、一个浮点值或一个整数,这取决于执行的操作。
    • Comfy dtype: COMBO[NUMBER, FLOAT, INT]
    • Python dtype: Union[int, float]

Usage tips

  • Infra type: CPU

Source code

class WAS_Number_Operation:

    def __init__(self):
        pass

    @classmethod
    def INPUT_TYPES(cls):
        return {'required': {'number_a': ('NUMBER',), 'number_b': ('NUMBER',), 'operation': (['addition', 'subtraction', 'division', 'floor division', 'multiplication', 'exponentiation', 'modulus', 'greater-than', 'greater-than or equals', 'less-than', 'less-than or equals', 'equals', 'does not equal'],)}}
    RETURN_TYPES = ('NUMBER', 'FLOAT', 'INT')
    FUNCTION = 'math_operations'
    CATEGORY = 'WAS Suite/Number/Operations'

    def math_operations(self, number_a, number_b, operation='addition'):
        if operation:
            if operation == 'addition':
                result = number_a + number_b
                return (result, result, int(result))
            elif operation == 'subtraction':
                result = number_a - number_b
                return (result, result, int(result))
            elif operation == 'division':
                result = number_a / number_b
                return (result, result, int(result))
            elif operation == 'floor division':
                result = number_a // number_b
                return (result, result, int(result))
            elif operation == 'multiplication':
                result = number_a * number_b
                return (result, result, int(result))
            elif operation == 'exponentiation':
                result = number_a ** number_b
                return (result, result, int(result))
            elif operation == 'modulus':
                result = number_a % number_b
                return (result, result, int(result))
            elif operation == 'greater-than':
                result = +(number_a > number_b)
                return (result, result, int(result))
            elif operation == 'greater-than or equals':
                result = +(number_a >= number_b)
                return (result, result, int(result))
            elif operation == 'less-than':
                result = +(number_a < number_b)
                return (result, result, int(result))
            elif operation == 'less-than or equals':
                result = +(number_a <= number_b)
                return (result, result, int(result))
            elif operation == 'equals':
                result = +(number_a == number_b)
                return (result, result, int(result))
            elif operation == 'does not equal':
                result = +(number_a != number_b)
                return (result, result, int(result))
            else:
                cstr('Invalid number operation selected.').error.print()
                return (number_a, number_a, int(number_a))