Can I force DecisionTreeClassifier to use integer conditions when the variable is integer? I'm trying to visualize a decision tree in python for the purpose of explainability. I noticed that a condition like "NumGoals >= 1.23" could be quite vague for the user and I would much rather to see something like this: "NumGoals > 1". 

So, I tried to switch the normalization off, and I even suspected that it might be a side effect the input matrix's dtype.

This is a simple code to reproduce the results.

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, plot_tree
import matplotlib.pyplot as plt
import numpy as np

iris = load_iris()

clf = DecisionTreeClassifier()
clf = clf.fit(np.array(iris.data, dtype=int), iris.target)
plot_tree(clf)
plt.show()


So, is it even possible to tell the tree to treat integers as integers?
Just for visualization you could use the precision parameter of plot_tree():

precision: int, optional (default=3)
Number of digits of precision for floating point in the values of impurity, threshold and value attributes of each node.

(see here)
However, since it also applies precision to impurity you might want to turn that off. Here is an example:
tree.plot_tree(clf) gives

tree.plot_tree(clf, precision=0, impurity=false) gives

(If gini importance was shown, all gini values would be 0 here)
Since it uses $\leq$ and all split thresholds are between the closest $X$ values the split criteria should still be correct. Even if your tree does not use integers. But I'd always double check and compare both plots.