The DHT protocol provides a communication error check. It transmits two bytes for humidity, two bytes for temperature and one byte which is the sum of the previous four bytes. If the values received adds up to the fifth byte then there isn't (statistically speaking) a communication error. A less technical error check is if the received humidity and temperature values are vaguely believable there probably isn't a communication error. I've found that I get reliable communication with a DHT11 over about 5 meters of CAT5 network cable using only the internal pull-up of the atmega enabled on the data pin.
I suspect you are simply seeing the inherent inaccuracy of the sensor. I've also compared the DHT11 temperature reading with an LM35 and a thermistor. The DHT11 was not as accurate as the other temperature sensing elements. I regard the DHT11 temperature reading as optional information, if you really want to measure temperature to better than +-2°C accuracy use another sensor. Also remember the +-2 °C stated accuracy is approximate and the reading gets truncated or rounded to an integer value so the accuracy of individual sensors may vary by as much as +- 3°C.