Case 1: f(0)=0. Setting x=0: f(0)=f(0)⌊f(y)⌋, so ⌊f(y)⌋=1 for every y. The equation becomes f(⌊x⌋y)=f(x) for all x,y; with y=0 we get f(0)=f(x), so f is a constant c with ⌊c⌋=1, i.e. c∈[1,2). These constants satisfy the equation: both sides equal c.
Case 2: f(0)=0.
*Step 1: f=0 on (0,1).* For 0<x<1, ⌊x⌋=0 and the equation reads 0=f(x)⌊f(y)⌋ for all y. If f(x)=0 for some x∈(0,1), then ⌊f(y)⌋=0 for all y. Now put x=1: f(y)=f(1)⌊f(y)⌋=0 for all y, contradicting f(x)=0. Hence f=0 on (0,1).
*Step 2: f=0 on (0,∞).* Take z>0 and an integer n≥1 with z/n<1. Putting x=n and y=z/n: f(z)=f(n)⌊f(z/n)⌋=f(n)⌊0⌋=0.
*Step 3: f=0 on (−∞,0).* Put x=−1: f(−y)=f(−1)⌊f(y)⌋. For y∈(0,1), f(y)=0 so f(−y)=0: f vanishes on (−1,0). For z<0, take an integer m≥1 with ∣z∣/m<1, and put x=−m and y=z/(−m)∈(0,1). Then ⌊x⌋y=z and f(z)=f(−m)⌊f(y)⌋=f(−m)⌊0⌋=0.
So f≡0.
Answer. f≡0, or f≡c for a constant c∈[1,2).
Lesson. Case-split on the "degenerate" value (f(0)=0 or not) first, then propagate zeros from a small interval outward using the scaling built into the equation.