6

我可能用数学来作恶……但是,在一个写成 0.7000123 的数字中,我需要得到“123”——也就是说,我需要提取数字小数部分的最后 3 位数字。最不重要的数字,前几个是大多数人需要的。

例子:

0.7500123 -> 123  
0.5150111 -> 111

它总是从数字 5 开始。是的,我将秘密信息存储在这个数字中,在不会影响数字使用方式的小数部分 - 这是潜在的邪恶部分。但这仍然是解决我遇到的某个问题的最佳方法。

我想知道数学或字符串操作是否是最不狡猾的方法。

性能根本不是问题,因为我只调用过一次。

任何人都可以看到一种简单的数学方法吗?例如 .NET 中的数学函数组合(我错过了)?

4

4 回答 4

5

可以肯定的是,这是一个奇怪的要求。但是获取最后 3 位的 int 值的一种方法是:

int x = (int)((yourNumber * 10000000) % 1000);

我猜想有一种更好的方法可以让您寻找更清洁的信息,但是鉴于您的要求,这应该可行。

于 2013-04-22T03:50:17.620 回答
3

首先将您的号码转换为字符串。

string s = num.ToString();


string s1 =  s.Substring(s.Length - 3, 3);

现在 s1 包含数字的最后 3 位数字

于 2013-04-22T04:22:35.323 回答
2

使用模数将为您提供最后 3 位数字:

var d = 0.7000123m;
d = d * 10000000 % 1000;

d 现在将保持值 123。

于 2013-04-22T03:48:17.533 回答
0

尝试这个:

    string value= "0.1234567";
    string lastthreedigit= value.Substring(value.Length - 3);
于 2013-04-22T04:26:38.247 回答