在C#中使用带有int的Math.Ceiling

use*_*886 5 c# double decimal

我正在尝试获取一个文件并将其拆分为512kb块.要计算块的数量,我需要做一些基本的数学运算.出于某种原因,我遇到了一些数据丢失问题.我无法弄清楚我做错了什么.我目前有:

int chunkSize = 524288;  // 512kb
int fileByteCount = GetFileSizeInBytes();
decimal result = ((decimal)(fileByteCount)) / ((decimal)(chunkSize));
int packetCount = Math.Ceiling(result);   // Doesn't work.
Run Code Online (Sandbox Code Playgroud)

我不能使用Math.Ceiling,因为它需要一个double.但是,我认为,我需要使用小数来进行数学运算.我究竟做错了什么?我该如何进行基本的数学运算?

Han*_*ant 8

使用整数数学:

int chunkSize = 524288;  // 512kb
int fileByteCount = GetFileSizeInBytes();
int packetCount = (fileByteCount + chunkSize - 1) / chunkSize;
Run Code Online (Sandbox Code Playgroud)

请注意,文件大小应该很,传输大于2千兆字节的文件并不罕见.