Ограничить точность с плавающей точкой?

Существует ли путь к круглым плавающим точкам к 2 точкам? Например: 3576.7675745342556 становится 3576.76.

10
задан Lorenzo Donati supports Monica 21 September 2013 в 15:51
поделиться

5 ответов

round(x * 100) / 100.0

Если вы должны сохранять значения с плавающей запятой:

roundf(x * 100) / 100.0

Гибкая версия с использованием стандартных библиотечных функций:

double GetFloatPrecision(double value, double precision)
{
    return (floor((value * pow(10, precision) + 0.5)) / pow(10, precision)); 
}
15
ответ дан 3 December 2019 в 14:42
поделиться

Умножьте на 100, округлите до целого числа (как хотите), разделите на 100. Обратите внимание, что, поскольку 1/100 не может быть точно представлена ​​с плавающей запятой, подумайте о сохранении целых чисел с фиксированной точностью.

3
ответ дан 3 December 2019 в 14:42
поделиться
yourFloatNumber= Float.Round(yourFloatNumber,2); // In C#
-6
ответ дан 3 December 2019 в 14:42
поделиться

Если вы распечатываете его, вместо этого используйте любую доступную вам функцию форматирования печати.

В C ++

cout << setprecision(2) << f; 

Для округления для отображения в графический интерфейс используйте std :: ostringstream

14
ответ дан 3 December 2019 в 14:42
поделиться

Не используйте плавающие числа. Используйте целые числа, хранящие количество центов, и печатайте десятичную точку перед последними 2 местами, если вы хотите печатать доллары. Плавающие числа почти всегда неверны для денег, если только вы не делаете упрощенные вычисления (например, наивные экономические математические модели), где только величина чисел действительно имеет значение, и вы никогда не вычитаете соседние числа.

2
ответ дан 3 December 2019 в 14:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: