UPDATE table with another table data
Try this untangled version to update all rows of char_check:

UPDATE car_check c
SET    fencing = ST_Contains(u.geom, ST_MakePoint(t.lat::float8, t.lng::float8))
FROM   test t
      ,rule r
JOIN   (
   SELECT DISTINCT ON (polyname)
          polyname, geom
   FROM   unknown_table
   ORDER  BY polyname, version DESC
    ) u USING (polyname)
WHERE  t.id = c.carid
AND    r.cargroupid = c.cargroupid


Major points


Use the simpler ST_MakePoint to construct a point geometry from numeric input.
You do not need ST_AsText() at all, since your column geom is of type geometry already.
Fastest and simplest way to get the geometry for the biggest version per polyname in table unknown_table is to use DISTINCT ON, which is a Postgres extension of the SQL standard. More details in this related answer:
How do I efficiently get &quot;the most recent corresponding row&quot;?
In reference to the currently accepted but invalid answer: the concatenation operator in Postgres (and standard SQL) is || (not +)