Advertisement
Guest User

Untitled

a guest
Jan 24th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.28 KB | None | 0 0
  1. private var cutOff:Int64 = 0;
  2. private var decimalOffSet:Int = 1;
  3. function getFloatStringWithPrecision(_v:Float):String {
  4. if (_v % 1 == 0) { //if number is whole just return
  5. return "" + _v;
  6. }
  7. var _locIsNegative:Bool = false;
  8. var _locFloat64:Float = _v;
  9. if (_locFloat64 < 0) {
  10. _locFloat64 *= -1;
  11. _locIsNegative = true;
  12. }
  13. var _locInt64:Int64 = Int64.fromFloat(_locFloat64); //this forces rounding and prevents initial overflow
  14. var _locBuildString:String = "" + _locInt64;
  15. this.cutOff = this.getCutOffValue(_locFloat64);
  16. while (true) {
  17. _locFloat64 *= 10;
  18. _locInt64 = Int64.fromFloat(_locFloat64);
  19. var tempString = "" + _locInt64;
  20. _locBuildString += tempString.substring(tempString.length - 1, tempString.length);
  21. if (_locFloat64 > this.cutOff.low) { //subtract a semi-arbitrary value to further prevent overflow
  22. var sub:Int64 = (Int64.fromFloat(_locFloat64) / cutOff) * cutOff;
  23. trace(_locFloat64, sub);
  24. _locFloat64 -= sub.low;
  25. }
  26. if (_locBuildString.length >= 17) { //This if statement is called when the string is technically a Float32. Change to 33 to make it a Float64
  27. _locBuildString = this.truncate(_locBuildString); //Cut off any remaining zeros
  28. var forString:String = _locBuildString.substring(0, decimalOffSet);
  29. var latString:String = _locBuildString.substring(decimalOffSet, _locBuildString.length);
  30. var signString:String = "";
  31. if (_locIsNegative) {
  32. signString = "-";
  33. }
  34. var returnString:String = signString + forString + "." + latString;
  35. return returnString;
  36. }
  37. }
  38. }
  39. function truncate(_s:String):String { //Cut off any remaining zeros
  40. var _locString:String = _s;
  41. while (true) {
  42. if (_locString.substring(_locString.length - 1, _locString.length) == "0") {
  43. _locString = _locString.substring(0, _locString.length - 1);
  44. } else {
  45. return _locString;
  46. }
  47. }
  48. }
  49. function getCutOffValue(_v:Float):Int64 { //Finds decimal offset and cut off value. A number of X00 will return a value of 100, X000 = 1000, etcetera. 3400 with cut off of 100 will instruct 3400 - 3000.
  50. var mod:Int = 1;
  51. this.decimalOffSet = 1;
  52. while (true) {
  53. if (_v / mod > 10) {
  54. ++decimalOffSet;
  55. mod *= 10;
  56. continue;
  57. } else {
  58. return mod;
  59. }
  60. }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement