Is there a way to match audio and video length in blender precisely?
What @batFINGER says is true. If you have your blender anim set at 30fps, but your video is really playing at 29.97 fps, the sound track and video tracks will get imported at different lengths. 

presumably because sound is imported as a single item with a timespan, and the video is imported as a range of frames, each being dropped in a frame slot. Someone else may know for sure.

You just need to play with the FPS until the two strips align.

In the first image I have imported a 6mb video at 24fps. The two strips show as different lengths.



In the second image, the strips line up. But I had to use a custom '15fps' because I have a cheap android phone.



Shouldn't be too much of a pain to sort through the dropdown options.

If you need a unique frame rate, you can select 'custom' from the Frame Rate dropdown. (it's the first item, and looks like a title.) Enter something close to actual frame rate. Then you can use the divider '/' field to adjust.

  

You can see in the images the resulting frame rates are: 31.01, 31.37, and 31.71 respectively.