Круглий подвійний у двох знаках після коми у C #?


258

Я хочу округлити подвійне значення у двох знаках після коми в c # як я можу це зробити?

double inputValue = 48.485;

після округлення

inputValue = 48.49;

Пов’язано: c # - Як округлити десяткове значення до 2 знаків після коми (для виведення на сторінку)


Зверніть увагу, що ви не можете представляти всі значення з плаваючою крапкою за допомогою подвійних, і це може
Ліам

Відповіді:


479

Це працює:

inputValue = Math.Round(inputValue, 2);

обхід обрізання float: float myTruncFloat = float.Parse (Math.Round (myFloat, 2) .ToString ());
П'єро Альберто

1
Якщо значення дорівнює 48,0000. Це не призведе до 48.00. подвійне вхідне значення = 48,00; inputValue = Math.Round (inputValue, 2); приведе лише 48. Будь-який воїн?
користувач1926138

100
Math.Round(inputValue, 2, MidpointRounding.AwayFromZero)

4
Це насправді те, що слід використовувати. Більшість операцій у банках тощо проводиться за допомогою цього методу (MidpointRounding.AwayFromZero).
MadBoy

41
припускаючи, що банки використовують парні, страшно чувак, не використовуйте значення наближення для валюти.
raggi

6
@raggi Боюся, що деякі (банки) роблять ... Це пояснило б багато речей
SparK

4
Так, я вважаю, що саме цим фільмом «Офісний простір» був знятий після округлення фракцій центів, які ніхто не помітить. Хороший момент бути обережним, коли довільно використовувати округлення.
atconway

1
І як частина сюжету одного з оригінальних фільмів про Супермена давно почалася.
Джеймс Вестгейт

25

Ви повинні використовувати

inputvalue=Math.Round(inputValue, 2, MidpointRounding.AwayFromZero)

Math.Round

Math.Round округляє подвійну точність з плаваючою комою до заданої кількості дробових цифр.

MidpointRounding

Вказує, як методи математичного округлення повинні обробляти число, яке знаходиться посередині між двома числами.

В основному, наведена вище функція буде приймати ваші вхідні значення та округляти їх до 2 (або залежно від вказаного вами числа) десяткових знаків. З , MidpointRounding.AwayFromZeroколи число знаходиться на півдорозі між двома іншими, воно округляється в сторону найближчого числа, від нуля. Існує також інший варіант, за допомогою якого ви можете використовувати ці круги до найближчого парного числа.


25

Ще один простий спосіб - використовувати ToString з параметром. Приклад:

float d = 54.9700F;    
string s = d.ToString("N2");
Console.WriteLine(s);

Результат:

54.97

19

Використовуйте Math.Round

value = Math.Round(48.485, 2);

Побийте мене (хоча я теж додав би напівколонку);
Рід Копсі

1
Однак будьте обережні з MidpointRounding: "Якщо значення першої цифри, що знаходиться праворуч від десяткової позиції цифр, дорівнює 5, цифра в позиції цифр округляється, якщо вона непарна, або залишається незмінною, якщо вона є парною"
Маттіас

8

ви можете спробувати його знизу. Для цього існує багато способів.

1. 
 value=Math.Round(123.4567, 2, MidpointRounding.AwayFromZero) //"123.46"
2.
 inputvalue=Math.Round(123.4567, 2)  //"123.46"
3. 
 String.Format("{0:0.00}", 123.4567);      // "123.46"
4. 
string.Format("{0:F2}", 123.456789);     //123.46
string.Format("{0:F3}", 123.456789);     //123.457
string.Format("{0:F4}", 123.456789);     //123.4568

Я використовував четвертий варіант. Написання F6 працювало для мене краще, ніж записувати 6 нулів ;-)
Моріс Клімек

2

Використовуйте інтерпольований рядок, це генерує закруглену рядок:

var strlen = 6;
$"{48.485:F2}"

Вихідні дані

"48.49"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.