Engines can evaluate the position as a whole with great precision.
This is not the case; the only thing an engine evaluates is that engine's evaluation function. Imagine a chess engine FishStock, whose evaluation is always that of StockFish cubed - e.g., if SF evaluates a position as -3, then FS's evaluation will be -27. These two engines will have the same playing strength, as they will have the same top move in any given position. Hence, there's no reason whatsoever to say that one evaluation function is "better" or "more precise" than the other.
What matters is a ranking of all chess positions/moves (from "best" to "worst") induced by engine evaluation function, and how well it approximates the ranking based on the mathematical values "win for white in N moves", "draw", or "win for black in M moves".
The only reason we are talking about the values of individual pieces is that linear evaluation functions, like 1xWP+3xWN+...+9xWQ-1xBP-...-9xBQ, are the simplest for our brain (and the computer) to handle. So, the "value of a piece" is merely an artifact of our way of thinking about the position. As soon as your thinking is more sophisticated than just a linear function, the notion of a value of a piece loses its meaning.
Note that mathematically, removing a piece usually just turns a drawn position to a losing one. You may calculate a drop in the evaluation function by a given engine, but as explained above, that's an arbitrary number that only has to do with the design of that particular engine rather than anything objective about the position.