I've seen this before.
This was caused in my case by configurable (it can happen from other composite products maybe) that had a price set.
In magento 2, configurable products should not have price related data. No price, no special price. They are all calculated from the prices of the simeple products.
In Magento 1, each product had a price and the configuration prices were relative to the price of the configurable product.
Because of this price for configurable products, the product price index calculates negative prices and they end up displayed in the frontend.
You can easily check in the db if there are configurable products with specified prices or special prices.
select attribute_id from eav_attribute where attribute_code in ('price', 'special_price');
//this should return 2 ids (let's say they are 75 and 76)
SELECT * FROM catalog_product_entity_decimal d
LEFT JOIN catalog_product_entity e ON d.entity_id = e.entity_id
WHERE d.attribute_id in (75, 76) AND
d.value IS NOT NULL AND
e.type_id = 'configurable';
Remove all the entries that you get, but please back up your database first.
After you are done, rerun the price index.