Приведенный ниже код должен работать нормально.
Если attr1
и attr2
- текст.
import { computed } from '@ember/object';
...
totalPrice: computed('attr1', 'attr2', function() {
return `${this.attr1} ${this.attr2}`;
})
attr1
и attr2
являются числами.
attr1: 1,
attr2: 2,
totalPrice: computed('attr1', 'attr2', function () {
return this.attr1 + this.attr2;
//(or)
return `${this.attr1 + this.attr2}`;
}),
Улучшение других ответов (при условии, что символ 8-битный, стандарт не гарантирует этого ..) ). Это будет выглядеть так:
char a[sizeof(double) * CHAR_BIT == 64];
или
BOOST_STATIC_ASSERT(sizeof(double) * CHAR_BIT == 64);
Вы можете найти CHAR_BIT, определенный в
или
.
Проверьте std :: numeric_limits
, если вам нужно знать, является ли ваш Реализация C ++ поддерживает стандартные двойники. Это гарантирует не только то, что общее число битов равно 64, но также размер и положение всех полей внутри двойника.
В C99 вы можете просто проверить, определен ли символ препроцессора __ STDC_IEC_559 __
. Если это так, то вам гарантировано, что значение double
будет 8-байтовым значением, представленным в формате IEEE 754 (также известный как IEC 60559). См. Стандарт C99, Приложение F. Однако я не уверен, доступен ли этот символ в C ++.
#ifndef __STDC_IEC_559__
#error "Requires IEEE 754 floating point!"
#endif
Кроме того, вы можете проверить предопределенные константы __ DBL_DIG __
(должно быть 15), __DBL_MANT_DIG __
(должно быть 53), __ DBL_MAX_10_EXP __
(должно быть 308), __ DBL_MAX_EXP __
(должно быть 1024), [113959_710] (1139597). и __ DBL_MIN_EXP __
(должно быть -1021). Они должны быть доступны во всех версиях C и C ++.
Я не думаю, что вы должны сосредоточиться на «необработанном размере» вашего двойника (который обычно составляет 80 бит, не 64 бит), а скорее по его точности.
Благодаря numeric_limits :: digits10 это довольно просто.
Для этого можно использовать статические утверждения Boost . Посмотрите на пример Использование в области имен .
Решение без буста состоит в том, чтобы определить массив следующим образом
char a[ 8 == sizeof(double) ];
Если значение типа double не 64-битное, тогда код будет выглядеть как
char a[0];
, что является ошибкой во время компиляции. Просто поместите соответствующий комментарий рядом с этой инструкцией.
См. в этом посте аналогичную проблему и утверждение без компиляции, называемое CCASSERT.