# Print vector with more decimal numbers

When outputting values for a mathutils.Vector and mathutils.Matrix, there's normally only 4 decimals printed out. Is there a way to output more decimals or would I have to do it manually like this?

print("%.7f, %.7f, %.7f" % (myVector.x, myVector.y, myVector.z))


str and repr

What you see in a print statement is the classes __str__ method, or how to represent the instance as a string, which as mentioned prints to 4 decimal places.

>>> str(C.object.location)
'<Vector (0.0000, 1.6400, 0.0000)>'


The representation, defined on class as def __repr__(self) result

>>> repr(C.object.location)
'Vector((0.0, 1.6399999856948853, 0.0))'


Gives us the values we would get from printing individuals.

>>> C.object.location.y
1.6399999856948853


and is what you see for result echoed in the python console.

>>> C.object.location
Vector((0.0, 1.6399999856948853, 0.0))


Similarly for matrix

>>> str(C.object.matrix_world)
'<Matrix 4x4 ( 0.9893, 0.0000, 0.0000, 0.0000)\n            ( 0.0000, 1.0000, 0.0000, 1.6400)\n            (-0.1461, 0.0000, 0.0000, 0.0000)\n            ( 0.0000, 0.0000, 0.0000, 1.0000)>'

>>> repr(C.object.matrix_world)
'Matrix(((0.9892723560333252, 0.0, 0.0, 0.0),\n        (0.0, 1.0, 0.0, 1.6399999856948853),\n        (-0.1460830420255661, 0.0, 0.0, 0.0),\n        (0.0, 0.0, 0.0, 1.0)))'

>>> print(repr(C.object.matrix_world))
Matrix(((0.9892723560333252, 0.0, 0.0, 0.0),
(0.0, 1.0, 0.0, 1.6399999856948853),
(-0.1460830420255661, 0.0, 0.0, 0.0),
(0.0, 0.0, 0.0, 1.0)))


To have 7 decimal places for each the suggestion in question is a good as any.

>>> print("%.7f, %.7f, %.7f" % C.object.location[:])
0.0000000, 1.6400000, 0.0000000

• Thanks a lot @batFINGER!
– user56873
Commented Mar 27, 2020 at 19:06