Quand vous lisez ou entendez cette phrase, la personne veut souvent affirmer que A vaut la moitié du prix de B, ou numériquement Prix(A) = ½ * Prix(B).
Dans la même idée, il se pourrait que vous tombiez sur la phrase:
A est deux fois plus cher que B.
Cette phrase est l'inverse de celle que vous avez écrite. Dans ce cas-ci, la personne veut dire que A vaut le double de B, soit Prix(A) = 2 * Prix(B).
Vous pouvez appliquer cela pour toutes les valeurs de n. Ainsi, pour Prix(A) = n * Prix(B), on dirait:
A est n fois plus cher que B.
A l'inverse, pour Prix(A) = (1/n) * Prix(B), on dirait:
A est n fois moins cher que B.
Il faut bien comprendre néanmoins que ces phrases sont des abus de langages, et que leur véritable sens est erroné, bien qu'utilisé par quasiment tout le monde. Si l'on prend par exemple la deuxième phrase utilisant l'expression deux fois plus cher, le calcul réel est Prix(A) = Prix(B) + 2 * Prix(B) = 3 * Prix(B). On ajoute donc le prix de B une fois de plus en réalité.
Néanmoins, du fait que ces expressions sont sur-utilisées dans le mauvais sens, quelqu'un vous comprendrait parfaitement suivant la première explication que je vous ai donné. Si vous voulez être sûr de ne faire aucune erreur de français, pour les deux phrases, il serait préférable de dire:
A vaut la moitié de B.
A vaut le double de B.
Pour la seconde partie de votre question, je vois difficilement quelqu'un dire en français l'équivalent de ces calculs avec les phrases plus cher que et moins cher que. Je verrais plutôt, pour Prix(A) <= n * Prix(B) + 100 euros:
Le prix de A est inférieur ou égal à n fois le prix de B plus 100 euros.
Et pour Prix(A) >= n * Prix(B) + 100 euros:
Le prix de A est supérieur ou égal à n fois le prix de B plus 100 euros.