ฉันจะปัดเศษค่าเป็นจำนวนเต็มที่ใกล้ที่สุดได้อย่างไร
ตัวอย่างเช่น:
1.1 => 1
1.5 => 2
1.9 => 2
"Math.Ceiling ()" ไม่ได้ช่วยฉัน ความคิดใด ๆ ?
ฉันจะปัดเศษค่าเป็นจำนวนเต็มที่ใกล้ที่สุดได้อย่างไร
ตัวอย่างเช่น:
1.1 => 1
1.5 => 2
1.9 => 2
"Math.Ceiling ()" ไม่ได้ช่วยฉัน ความคิดใด ๆ ?
คำตอบ:
ดูเอกสารอย่างเป็นทางการสำหรับข้อมูลเพิ่มเติม ตัวอย่างเช่น:
โดยทั่วไปคุณให้Math.Round
พารามิเตอร์สามวิธี
โค้ดตัวอย่าง:
var roundedA = Math.Round(1.1, 0); // Output: 1
var roundedB = Math.Round(1.5, 0, MidpointRounding.AwayFromZero); // Output: 2
var roundedC = Math.Round(1.9, 0); // Output: 2
var roundedD = Math.Round(2.5, 0); // Output: 2
var roundedE = Math.Round(2.5, 0, MidpointRounding.AwayFromZero); // Output: 3
var roundedF = Math.Round(3.49, 0, MidpointRounding.AwayFromZero); // Output: 3
คุณต้องMidpointRounding.AwayFromZero
ถ้าคุณต้องการให้ค่า. 5 ถูกปัดเศษขึ้น Math.Round()
แต่น่าเสียดายที่นี้ไม่ได้เป็นพฤติกรรมเริ่มต้นสำหรับ หากใช้MidpointRounding.ToEven
(ค่าเริ่มต้น) ค่าจะถูกปัดเศษเป็นเลขคู่ที่ใกล้ที่สุด( 1.5
ปัดเป็น2
แต่2.5
จะปัดด้วย2
)
away from zero
ก็หมายความว่าจะรอบ-1.5
-2
คุณต้องไม่Math.Round
"ปัดเศษ" ขึ้นเสมอในขณะที่ปัดขึ้นหรือลงขึ้นอยู่กับค่าหลังจุดทศนิยมMath.Ceiling
Ceiling
Round
มีคู่มือเล่มนี้และก็น่ารักเหมือนกัน:
double d1 = 1.1;
double d2 = 1.5;
double d3 = 1.9;
int i1 = (int)(d1 + 0.5);
int i2 = (int)(d2 + 0.5);
int i3 = (int)(d3 + 0.5);
เพียงแค่เพิ่ม 0.5 ให้กับตัวเลขใด ๆ และโยนมันเป็น int (หรือพื้น) และมันจะถูกปัดเศษอย่างถูกต้องทางคณิตศาสตร์: D
คุณสามารถใช้ Math.Round ตามที่คนอื่นแนะนำ (แนะนำ) หรือคุณสามารถเพิ่ม 0.5 และส่งไปยัง int (ซึ่งจะทิ้งส่วนทศนิยม)
double value = 1.1;
int roundedValue = (int)(value + 0.5); // equals 1
double value2 = 1.5;
int roundedValue2 = (int)(value2 + 0.5); // equals 2
เพียงแค่เตือนความจำ ระวังสองครั้ง
Math.Round(0.3 / 0.2 ) result in 1, because in double 0.3 / 0.2 = 1.49999999
Math.Round( 1.5 ) = 2
คุณมีฟังก์ชัน Math.Round ที่ทำสิ่งที่คุณต้องการ
Math.Round(1.1) results with 1
Math.Round(1.8) will result with 2.... and so one.
1.5
มูลค่าล่ะ? คุณต้องการพารามิเตอร์เพิ่มเติม
สิ่งนี้จะปัดเศษขึ้นเป็น 5 ที่ใกล้ที่สุดหรือไม่เปลี่ยนถ้ามันหารด้วย 5 ลงตัวแล้ว
public static double R(double x)
{
// markup to nearest 5
return (((int)(x / 5)) * 5) + ((x % 5) > 0 ? 5 : 0);
}
ฉันกำลังมองหาสิ่งนี้ แต่ตัวอย่างของฉันคือการหาตัวเลขเช่น 4.2769 และวางลงในช่วงที่เป็นเพียง 4.3 ไม่เหมือนกันทุกประการ แต่ถ้าสิ่งนี้ช่วยได้:
Model.Statistics.AverageReview <= it's just a double from the model
จากนั้น:
@Model.Statistics.AverageReview.ToString("n1") <=gives me 4.3
@Model.Statistics.AverageReview.ToString("n2") <=gives me 4.28
ฯลฯ ...
ใช้Math.Round
:
double roundedValue = Math.Round(value, 0)
var roundedVal = Math.Round(2.5, 0);
มันจะให้ผลลัพธ์:
var roundedVal = 3
หากคุณทำงานกับจำนวนเต็มแทนที่จะเป็นเลขทศนิยมนี่คือวิธี
#define ROUNDED_FRACTION(numr,denr) ((numr/denr)+(((numr%denr)<(denr/2))?0:1))
ในที่นี้ทั้ง"numr"และ"denr"เป็นจำนวนเต็มที่ไม่ได้ลงชื่อ
ใช้การMath.Round(number)
ปัดเศษเป็นจำนวนเต็มที่ใกล้ที่สุด
เขียนวิธีการออกรอบของคุณเอง สิ่งที่ต้องการ,
function round(x)
rx = Math.ceil(x)
if (rx - x <= .000001)
return int(rx)
else
return int(x)
end
decimal RoundTotal = Total - (int)Total;
if ((double)RoundTotal <= .50)
Total = (int)Total;
else
Total = (int)Total + 1;
lblTotal.Text = Total.ToString();