双精度到十进制不转换和舍入

时间:2013-12-31 09:39:34

标签: c#

将两位小数舍入到两位小数的最佳方法是什么?

例如,我想转换

3.45345323423423E+28

3.45

5 个答案:

答案 0 :(得分:7)

您知道3.45345323423423E+28是一个非常大的数字,并且不包含小数部分吗?

(剥离scientific notation,你的号码是34,534,532,342,342,300,000,000,000,000,当然是一个整数。)

如果要将数字舍入到2位小数,请使用Math.Round(value, 2);但请注意,您的示例编号不会更改。

但是,如果您想要舍入为2 有效数字,请参阅以下答案: Round a double to x significant figures

答案 1 :(得分:1)

使用Math.round

Math.Round (value, 2);

将数字舍入到指定数量的小数位双精度浮点值。

答案 2 :(得分:1)

使用此:

Math.Round(value, 2);

这会将您的值四舍五入到小数位。

将其存储在某个变量中或显示它。

答案 3 :(得分:1)

首先,您应该考虑使用其他数据类型来获得如此大的数字。也许十进制。因为double的精度只有15-16位数。

如果你仍然坚持使用double,那么你可以在这里使用Math.Round

double db = 3.45345323423423E+28;
db = Math.Round(db, 2);

但是,如果你改变主意切换到十进制,那么下面应该做的。

decimal d = 3.45345323423423E+28m;
d = decimal.Round(d, 2);

答案 4 :(得分:0)

我想你想这样显示:3.45E + 28

然后你应该做这样的事情:

double number = 3.45345323423423E+28;
string result = number.ToString("0.00E+00");

希望这会帮助你完成任务。

相关问题