(Solved)DHT21 wrong value

I was testing DHT21 sensor in Uno for a project, which printed weird value so i changed.
With no success so i went to another. Again, no difference.
I do not want to believe that we have 4 sensors, and all of them is faulty,
while printing exact same wrong values.

This is my wiring, no resistors as I was told 21 comes internal.

#include <dht.h>
dht DHT;

#define DHT21_PIN 4

float hum;
float temp;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int chk = DHT.read21(DHT21_PIN);

  hum = DHT.humidity;
  temp = DHT.temperature;
  Serial.print("Humidity: ");
  Serial.print(hum);
  Serial.print(" %, Temp: ");
  Serial.print(temp);
  Serial.println(" Celsius");
  delay(2000);
}

I used DHTlib from Mr.Tillaart, also tried DHTsensorlibrary of Adafruit,
which seems flawlessly working with others,
and this is what I get.

17:12:34.772 -> Humidity: 49.90 %, Temp: -101.90 Celsius
17:12:36.776 -> Humidity: 49.90 %, Temp: -101.90 Celsius
17:12:38.803 -> Humidity: 49.90 %, Temp: -102.00 Celsius
17:12:40.817 -> Humidity: 49.90 %, Temp: -102.00 Celsius
17:12:42.850 -> Humidity: 49.90 %, Temp: -101.90 Celsius
17:12:44.846 -> Humidity: 49.90 %, Temp: -101.90 Celsius

What's with my sensor and what should i try next?

The examples show a call to DHT.begin() in setup.

It might be a wiring problem. Try connecting the DHT21 cables directly to the Arduino board.

Also,I suggest trying with the Adafruit library.

Tried and neither switching to Adafruit or direct plugging worked.
Also, should DHT.begin moved to somewhere else then?
New code, an Adafruit example trimmed of captions.

#include "DHT.h"

#define DHTPIN 2


#define DHTTYPE DHT21  // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println(F("DHTxx test!"));

  dht.begin();
}

void loop() {
  delay(2000);

  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }


  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.println(F("°C "));
}

11:51:23.239 -> DHTxx test!
11:51:25.262 -> Humidity: 1.00%  Temperature: 1.00°C 
11:51:27.277 -> Humidity: 49.90%  Temperature: -3273.80°C 
11:51:29.267 -> Humidity: 49.90%  Temperature: -3273.80°C 
11:51:31.325 -> Humidity: 49.90%  Temperature: -3273.80°C 
11:51:33.325 -> Humidity: 49.90%  Temperature: -3273.80°C 

Try extending the delay in loop to 3 seconds as a test. The example states "wait a few seconds".

I have two different datasheets for that sensor and both show a typical circuit with an external pull-up.
Try a 4.7K

I extended the delay to 3 and 5 secs to no joy.

16:56:44.190 -> Humidity: 49.90%  Temperature: -3276.10°C 
16:56:47.215 -> Humidity: 49.90%  Temperature: -3276.10°C 
16:56:50.216 -> Humidity: 49.90%  Temperature: -3276.10°C 

16:58:22.158 -> Humidity: 49.90%  Temperature: -3276.20°C 
16:58:27.178 -> Humidity: 49.90%  Temperature: -3276.20°C 

Pull-up needs some time as i have none in possession, but i have 10k coming up in Monday so maybe that'll be enough.

You could try using the internal pullup resistor, just add the following to setup:

pinMode(DHTPIN, INPUT_PULLUP);

Still no joy, I'm starting to think if i got a wrong batch.

#include "DHT.h"

#define DHTPIN 7     
#define DHTTYPE DHT21   

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println(F("DHTxx test!"));

  dht.begin();
  
  pinMode(DHTPIN, INPUT_PULLUP);
}

void loop() {
  delay(2000);

  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }


  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.println(F("°C "));
}
09:47:58.804 -> DHTxx test!
09:48:00.852 -> Humidity: 49.90%  Temperature: -3274.60°C 
09:48:02.852 -> Humidity: 49.90%  Temperature: -3274.60°C 
09:48:04.925 -> Humidity: 49.90%  Temperature: -3274.60°C 

Only the External pullup are left to try (when it arrives).

Update: tried heating it, jumped straight above 0 deg celcius till 37 deg or so.
Still no change on humidity.
Ordering another sensor incase it really was bad batch.

Final update: Indeed it was bad batch, code is now working as intended.
I appriciate everyone who answered this clueless question.