Why is DBA_SEGMENTS presenting twice the amount of data than the DBA_TABLES?
Your select on dba_tables doesn't take into account:


Empty blocks in the table (see initial/next, minextents and freelist-related storage parameters among others)
Empty space in the blocks (due to pct_free mainly)
Block headers (initrans influences this size, among others)


I.e. it doesn't take into account the physical storage of the data at all. dba_segments on the other hand only counts physical blocks for the segment, regardless of how much data they contain.

A table with a pct_free set to 50% and never updated will have statistically half-empty blocks for example, and the calculation you did on dba_tables will reveal that when compared to dba_segments.

See the Logical Storage Structures docs to learn more about how data is stored in your database (and the overhead involved).