Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: sdk/lib/core/num.dart

Issue 2005723004: Fraction class prototype and test (not to be committed). (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: work in progress Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « runtime/vm/token.h ('k') | tests/language/vm/fraction_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of dart.core; 5 part of dart.core;
6 6
7 /** 7 /**
8 * An integer or floating-point number. 8 * An integer or floating-point number.
9 * 9 *
10 * It is a compile-time error for any type other than [int] or [double] 10 * It is a compile-time error for any type other than [int] or [double]
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 * extended to work with doubles. In that case `r` may have a non-integer 99 * extended to work with doubles. In that case `r` may have a non-integer
100 * value, but it still verifies `0 <= r < |b|`. 100 * value, but it still verifies `0 <= r < |b|`.
101 * 101 *
102 * The sign of the returned value `r` is always positive. 102 * The sign of the returned value `r` is always positive.
103 * 103 *
104 * See [remainder] for the remainder of the truncating division. 104 * See [remainder] for the remainder of the truncating division.
105 */ 105 */
106 num operator %(num other); 106 num operator %(num other);
107 107
108 /** Division operator. */ 108 /** Division operator. */
109 double operator /(num other); 109 num operator /(num other);
110 110
111 /** 111 /**
112 * Truncating division operator. 112 * Truncating division operator.
113 * 113 *
114 * If either operand is a [double] then the result of the truncating division 114 * If either operand is a [double] then the result of the truncating division
115 * `a ~/ b` is equivalent to `(a / b).truncate().toInt()`. 115 * `a ~/ b` is equivalent to `(a / b).truncate().toInt()`.
116 * 116 *
117 * If both operands are [int]s then `a ~/ b` performs the truncating 117 * If both operands are [int]s then `a ~/ b` performs the truncating
118 * integer division. 118 * integer division.
119 */ 119 */
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 304
305 /** 305 /**
306 * Return this [num] as a [double]. 306 * Return this [num] as a [double].
307 * 307 *
308 * If the number is not representable as a [double], an 308 * If the number is not representable as a [double], an
309 * approximation is returned. For numerically large integers, the 309 * approximation is returned. For numerically large integers, the
310 * approximation may be infinite. 310 * approximation may be infinite.
311 */ 311 */
312 double toDouble(); 312 double toDouble();
313 313
314 /** Return this [num] as a [fraction]. */
315 fraction toFraction();
316
317 /** Return this [num] as a [fraction] with 100 as the
318 * denominator. Precision loss may occur. Infinite and NaN
319 * are not supported. */
320 fraction toPercent();
321
314 /** 322 /**
315 * Returns a decimal-point string-representation of `this`. 323 * Returns a decimal-point string-representation of `this`.
316 * 324 *
317 * Converts `this` to a [double] before computing the string representation. 325 * Converts `this` to a [double] before computing the string representation.
318 * 326 *
319 * If the absolute value of `this` is greater or equal to `10^21` then this 327 * If the absolute value of `this` is greater or equal to `10^21` then this
320 * methods returns an exponential representation computed by 328 * methods returns an exponential representation computed by
321 * `this.toStringAsExponential()`. Otherwise the result 329 * `this.toStringAsExponential()`. Otherwise the result
322 * is the closest string representation with exactly [fractionDigits] digits 330 * is the closest string representation with exactly [fractionDigits] digits
323 * after the decimal point. If [fractionDigits] equals 0 then the decimal 331 * after the decimal point. If [fractionDigits] equals 0 then the decimal
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
444 result = double.parse(source, _returnDoubleNull); 452 result = double.parse(source, _returnDoubleNull);
445 if (result != null) return result; 453 if (result != null) return result;
446 if (onError == null) throw new FormatException(input); 454 if (onError == null) throw new FormatException(input);
447 return onError(input); 455 return onError(input);
448 } 456 }
449 457
450 /** Helper functions for [parse]. */ 458 /** Helper functions for [parse]. */
451 static int _returnIntNull(String _) => null; 459 static int _returnIntNull(String _) => null;
452 static double _returnDoubleNull(String _) => null; 460 static double _returnDoubleNull(String _) => null;
453 } 461 }
OLDNEW
« no previous file with comments | « runtime/vm/token.h ('k') | tests/language/vm/fraction_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698