Famic0m Ответов: 3

Как я удаляю лишние десятичные точки из общей суммы


Я кодирую простую программу, которая вычисляет заданную сумму итогов для отдельных категорий вместе с промежуточным итогом, налогом с продаж и окончательным итогом.

По налогу с продаж и общей сумме я получаю это при запуске программы:

Sales tax is
0.275

Grand total is
5.275


Я хочу, чтобы это выглядело вот так:

Sales tax is
0.27

Grand total is
5.27


Я перепробовал все, чтобы заставить его сбить лишнюю цифру, но все, что я пробовал до сих пор, не сработало.

Что я уже пробовал:

до сих пор я пытался просто удалить лишнюю цифру из налоговой переменной, а также добавить туда дополнительный 0, чтобы она выглядела так:

double tax = 0.055;

3 Ответов

Рейтинг:
22

OriginalGriff

Попробуй:

double d = 0.275;
Console.WriteLine($"{d:0.00}");
Это округляется, как вы и ожидали:
0.28
Чтобы обрезать вместо круглого, вы должны быть более многословны:
Console.WriteLine($"{Math.Truncate(d * 100) / 100:0.00}");
Дает:
0.27


Famic0m

кодирование round up сработало очень хорошо спасибо Вам за это

OriginalGriff

Пожалуйста

BillWoodruff

к вашему сведению: консоль.WriteLine($"{Math.Усечение(d * 100) / 100}");

также пишет 0.27

OriginalGriff

Последний бит ":0.00" просто принуждает два места после десятичной дроби, даже если они оба являются нулями.
"0.00"
Вместо
"0"

BillWoodruff

Вверх-проголосовали !

Наконец до меня дошло, что :0.00-это использование компонента Format String, который зависит (afaik) от контекста преобразования в строку консоли. метод WriteLine.

Даже здесь: https://docs.microsoft.com/en-us/dotnet/standard/base-types/composite-formatting

Я не нахожу адекватного объяснения использованию двоеточия в качестве разделителя.

Спасибо за то, что еще раз расширили мои возможности ... рубежи :)

OriginalGriff

Нет, он встроен в интерполяцию строк:
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/interpolated

Но не стоит благодарности!

BillWoodruff

Я понимаю, к чему ты клонишь ! спасибо, Билл

Рейтинг:
0

Richard MacCutchan

Цитата:
Я уже все перепробовал
Очевидно, что нет, так как это всего лишь простая проблема форматирования: Строка.Метод Форматирования (Система) | Microsoft Docs[^]


Рейтинг:
0

Gerry Schmitz

Ваша проблема заключается в том, чтобы рассчитать налог до 3 десятичных знаков в первую очередь. Есть полпенни? Сбалансированные книги?


OriginalGriff

Налоги иногда могут быть десятичными: ставка НДС в Великобритании долгое время составляла 17,5%, несмотря на то, что монета 1/2p была отозвана в 1984 году.

Gerry Schmitz

"Ставки" могут быть любыми; результата нет. Налоги-это отдельный счет; они не "скатываются" в общую сумму. Здесь нет возможности хранить или отчитываться (квитанции, счета, налоговые декларации) о долях копейки. Если он не создает (небрежно) "внутренние" отчеты, его расчеты не пройдут финансовый аудит. Он "решил" не ту проблему. Другими словами, он не "округляет", когда должен (промежуточные вычисления).

OriginalGriff

О, боже - открываю целую банку червей ... :смеяться:
Доли Пенни складываются в миллионы фунтов в некоторых случаях. Действительно, есть известный способ "незаметно" украсть деньги, называемый "нарезкой салями" или "Пенни - бритьем", когда все фракции перенаправляются на счет мошенников-но большинство компаний / налоговых органов / бухгалтеров знают об этом, поэтому он не работает долго!

Большинство налоговых органов дают указания, что делать с дробными копейками: округлить плату за клиента или округлить налог; и горе вам, если вы проигнорируете это и выберете то, что вам наиболее выгодно! :смеяться:
Понятно, что большинство налоговиков предпочитают, чтобы вы собирали деньги.:
https://www.gov.uk/hmrc-internal-manuals/vat-trader-records/vatrec12020

В Великобритании топливо продается в литрах и оценивается в доли пенни за литр: £1:137-это последняя цена, которую я заплатил за дизельное топливо.

Gerry Schmitz

Банки зарабатывают миллиарды, считая копейки. Что сводит людей с ума, так это отчеты, подобные OP, которые отличаются на цент по сравнению с финансовыми отчетами. Нет никакой банки с червями. ОП не следует ОПБУ: общепринятая бухгалтерская практика. "Насос" может сказать $x.xxxx за литр, но счет (и бухгалтер) говорит, что налог равен x.xx, а не xx.xxxxx