- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
public string ConvDoubToStr(double doub)
{
string str = ((int)doub).ToString();
double k = (doub - (int)doub);
if (k > 0)
str += ",";
while (k > 0)
{
k = k * 10;
switch ((int)k)
{
case 0:
str += "0";
break;
case 1:
str += "1";
break;
case 2:
str += "2";
break;
case 3:
str += "3";
break;
case 4:
str += "4";
break;
case 5:
str += "5";
break;
case 6:
str += "6";
break;
case 7:
str += "7";
break;
case 8:
str += "8";
break;
case 9:
str += "9";
break;
}
k = k - (int)k;
}
return str;
}
Lennis 18.08.2010 19:58 # +3
Altravert 18.08.2010 20:27 # +3
Lure Of Chaos 18.08.2010 21:22 # −1
J0hnny 19.08.2010 00:07 # 0
"инетересно,что операция k = (doub - (int)doub) при doub=123.123 дала: k=0.12300000000000466, при том что сам (int)doub, естественно, равнялся 123 ровно."
"связано это с тем,что тип дабл "понимает" 15 знаков после запятой, но не больше. поэтому там в конце чушь и получается. "
Тип жжёт
J0hnny 19.08.2010 00:12 # +1
"String.Format("{0:F10}",s).TrimEnd( del)
честно сказать, я не уверен, что это будет работать быстрее,чем мой конвертер."
Конвертер Попова, скоро, на каждом школьном компьютере.
da4ever 19.08.2010 04:08 # 0
вместо str += ","; надо написать что-то вроде
ds = system.localization.getCurrentCulture(). getDeceminalSeparator();
switch (dc)
{
case ".":
str += ",";
break;
case ",":
str += ".";
break;
case default:
str += ",";
}
da4ever 19.08.2010 04:12 # 0
брать сепаратор не функцией, а свичем по каррент калчер.
ну и конечно сделать аутпут красивее. сам сепаратор вставлять между каждой триадой в целой части.
daemon_master 19.08.2010 04:34 # +1
FedorFo 25.08.2010 15:12 # 0
Altravert 25.08.2010 15:28 # 0
Nigma143 25.08.2010 16:45 # 0
Altravert 26.08.2010 03:52 # 0